Ani*_*ger 6 linux shared-libraries dynamic-linking static-libraries fpic
我有一个项目,我有一个静态库libhelper.a,另一个与我的实际共享对象库,libtestlib.so.我的目标是链接libhelper.a到libtestlib.so.这可能在Linux/BSD上吗?当我尝试创建测试程序时,出现以下错误:
./prog1:/usr/local/lib/libtestlib.so.1.0:未定义的符号''
我的猜测是,这是因为libhelper.a没有用-fPICwhile 编译libtestlib.so.构建使用对静态库具有依赖性的共享库的程序的正确方法是什么?
谢谢!
Emp*_*ian 11
我的目标是将libhelper.a链接到libtestlib.so.这可能在Linux上吗?
当然.这应该做:
gcc -shared -fPIC -o libtestlib.so $(OBJS) \
-Wl,--whole-archive -lhelper -Wl,--no-whole-archive
Run Code Online (Sandbox Code Playgroud)
libhelper.a未使用-fPIC编译
最好用lib重建libhelper.a -fPIC.如果那是不可能的,那么上面的命令仍然会起作用Linux/ix86,但不会在例如Linux/x86_64.
构建使用对静态库具有依赖性的共享库的程序的正确方法是什么?
如果包括libhelper.a到libtestlib.so如上,那么简单:
gcc main.c -ltestlib
Run Code Online (Sandbox Code Playgroud)
是你所需要的全部.如果你坚持要链接libhelper.a,那么你必须告诉最终用户他必须链接到例如
gcc main.c -ltestlib -lhelper
Run Code Online (Sandbox Code Playgroud)
没有办法指明libtestlib.so依赖libhelper.a.
| 归档时间: |
|
| 查看次数: |
7337 次 |
| 最近记录: |