我通过使用libmxml.a库的某些功能制作了一个动态库,但收到此警告:
*Warning: Linking the shared library libgstmatroskademux.la against the _
*static library /home/Mr32/gst-template4_final/gst-plugin/src/libmxml.a _
is not portable!
我也收到此警告:
gcc: /home/Mr32/gst-template4_final/gst-plugin/src/libmxml.a: linker _
input file unused because linking not done
那么,此警告的含义是什么,我该如何解决?
编辑:
已经有一个已经自动生成的make文件,用于编译gstreamer插件。现在要在该插件中使用libmxml.a的某些功能,我已经在make文件的
$(PATH)/libmxml.a
变量中添加了GST_CFLAGS
。现在,当我执行make
和make install
时,插件可以正常工作,但仍然收到此警告。 最佳答案
无法将共享库链接到静态库(除非您真的很清楚自己在做什么)。不要这样
第一个警告来自libtool。它告诉您,您要求的操作将在不同的系统上执行不同的操作,其中某些操作可能不是您想要的。通常,它会以各种壮观的方式失败,因为共享库和静态库中的代码需要使用不同的编译器标志进行编译。
第二个警告来自gcc。它告诉您在编译时提供静态库是没有意义的。那是因为您在$(PATH)/libmxml.a
中有CFLAGS
,与它无关。实际上,大多数时候您不应该拥有$(PATH)/libmxml.a
,而应该拥有-L$(PATH) -lmxml
。那仍然应该在LDFLAGS
中,但是gcc也不会在编译器命令行中提示。