【发布时间】:2011-01-11 16:22:11
【问题描述】:
我正在尝试链接静态 libc.a 和动态 lib.so 失败。
我已经尝试了以下方法:
-
首先我测试所有动态:
- gcc -shared libtest.c -o libtest.so
- gcc -c main.c -o main.o
- gcc main.o -o 测试 -L。 -ltest
它正在工作(编译和执行)
-
其次,我测试我想要的(动态库和静态库):
- gcc -shared libtest.c -o libtest.so
- gcc -c main.c -o main.o
- gcc main.o -o test libtest.so /usr/lib/libc.a
它正在编译,但在执行时,它出现了段错误! strace 显示它正在尝试访问 libc.so !!!
-
最后我尝试编译一个不参考动态库的简单程序
- gcc -static main.c --> 编译正常,运行正常
- gcc main.c /usr/lib/libc.a --> 编译成功,运行:segmentation fault (a strace show that it's access to libc.so)
怎么做?
谢谢
【问题讨论】:
-
什么操作系统?如果您为感兴趣的操作系统添加标签,将会有更多人看到该问题。
-
使用的gcc是什么版本的?
标签: gcc linker shared-libraries static-libraries