我正在linux上生成一个共享库,并使用这个xml解析器“mini-xml”来解析库的一些xml配置文件。我想要的是不依赖于这个XML解析器,所以我想使用供应商提供的静态libmxml.a库,而不是libmxml.so,它和libmxml.so一起存在,这样我的共享库在部署时就不依赖于libmxml。我试过跟着,但没用。
gcc-fpic-o myobject.o-static-lmxml-c myobject.c
但它给出了警告
链接器输入未使用,因为链接未完成
我错过了什么?任何帮助都将不胜感激。
最佳答案
您需要专门为此构建mxml库,用pic代码(-fPIC
)创建一个静态库,比如libmxml_pic.a
。libmxml.a
包含仅适用于可执行文件的位置相关代码(在32位x86上可以工作,但仍然很难看)。
您还需要避免从库中导出MXML符号。可以通过版本脚本(--version-script
到ld,请参阅文档)和/或在编译mxml对象时传递-fvisibility=hidden
来完成此操作。