我通过使用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。现在,当我执行makemake install时,插件可以正常工作,但仍然收到此警告。

最佳答案

无法将共享库链接到静态库(除非您真的很清楚自己在做什么)。不要这样

第一个警告来自libtool。它告诉您,您要求的操作将在不同的系统上执行不同的操作,其中某些操作可能不是您想要的。通常,它会以各种壮观的方式失败,因为共享库和静态库中的代码需要使用不同的编译器标志进行编译。

第二个警告来自gcc。它告诉您在编译时提供静态库是没有意义的。那是因为您在$(PATH)/libmxml.a中有CFLAGS,与它无关。实际上,大多数时候您不应该拥有$(PATH)/libmxml.a,而应该拥有-L$(PATH) -lmxml。那仍然应该在LDFLAGS中,但是gcc也不会在编译器命令行中提示。

10-02 04:26