【发布时间】:2012-03-29 11:41:16
【问题描述】:
我已将 GCC 4.6.3 安装到 Mac 系统上的非系统路径中,它工作正常。但是,GCC 想要对我编译的所有二进制文件使用来自 libgcc 的代码,并且运行 otool -L 显示这些编译的程序在 GCC 的安装路径中查找 libgcc_s.1.dylib。我可以通过传递 -static-libgcc 来覆盖它,它只是将所需的东西编译到二进制文件中,这很好。问题是这似乎只适用于可执行文件,而不适用于共享库。如果我使用 GCC 编译一些我想在我的程序之一中作为 .dylib 使用的第三方库,即使我指定 -static,这些库仍会在本地 GCC 安装路径中查找 libgcc_s.1.dylib -libgcc! 不用说,这是一个问题,因为无法保证这些库在其他系统上运行时会找到 libgcc。
我用 ffmpeg 试过这个。如果我查看 config.log,肯定会使用 -static-libgcc。 GCC 只是没有将 libgcc 与生成的 dylib 静态链接。我什至尝试了 -nostdlib、-nostartfiles 和 -nodefaultlibs 选项,但它们被忽略了。再次,我检查了 config.log,它们肯定在那里!
【问题讨论】:
标签: macos gcc compiler-construction ffmpeg shared-libraries