【发布时间】:2011-01-01 23:10:44
【问题描述】:
我想使用 gcc 生成一个共享库,但我想静态链接它依赖的一些其他库。现在生成我使用的“标准”动态链接输出文件
gcc -dynamiclib *.o -lfoo -lbar -o outfile
应该是
gcc -shared *.o -lfoo -lbar -o outfile
在 linux 系统上为 binutils ld 启用。现在如果我想静态链接 libfoo 和 libbar,我可以直接命名静态库
gcc -dynamiclib *.o /usr/lib/libfoo.a /usr/lib/libbar.a -o outfile
但是,这样我必须自己查找库文件。 GNU binutils ld 支持这个:
gcc -shared *.o -l:libfoo.a -l:libbar.a -o outfile
但苹果的ld 没有。
- 有没有办法让苹果的
ld自己寻找静态库? - 如果没有,是否有其他方法可以避免命名档案的确切位置,例如使用
-static开关从需要 libfoo 和 libbar 的目标文件中生成中间输出文件,并将该文件与剩余的目标文件链接在一起以创建动态对象?
【问题讨论】: