gpt4 book ai didi

macos - 无法让 GCC 的 -static-libgcc 在 Mac OS X 上与 DYLIB 库一起使用

转载 作者:行者123 更新时间:2023-12-04 22:48:54 34 4
gpt4 key购买 nike

我已将 GCC 4.6.3 安装到 Mac 系统上的非系统路径中,并且工作正常。但是,GCC 想对我编译的所有二进制文件使用来自 libgcc 的代码,并且运行 otool -L 表明这些编译的程序在 GCC 的安装路径中查找 libgcc_s.1.dylib。我可以通过传递-static-libgcc 来覆盖它,它只是将所需的东西编译到二进制文件中,这很好。问题是这似乎只适用于可执行文件,而不适用于共享库。如果我使用 GCC 编译一些我想在我的一个程序中作为 .dylib 使用的第三方库,即使我指定 -static-libgcc,这些库仍会在本地 GCC 安装路径中查找 libgcc_s.1.dylib!不用说,这是一个问题,因为无法保证这些库在其他系统上运行时会找到 libgcc。

我用ffmpeg试过这个。如果我查看 config.log,肯定会使用 -static-libgcc。 GCC 只是没有将 libgcc 与生成的 dylib 静态链接。我什至尝试了 -nostdlib、-nostartfiles 和 -nodefaultlibs 选项,但它们被忽略了。再次,我检查了 config.log,他们肯定在那里!

最佳答案

我相信这与跨共享库边界抛出异常有关。这个page说:

There are several situations in which an application should use the shared libgcc instead of the static version. The most common of these is when the application wishes to throw and catch exceptions across different shared libraries. In that case, each of the libraries as well as the application itself should use the shared libgcc.

Therefore, the G++ and GCJ drivers automatically add -shared-libgcc whenever you build a shared library or a main executable, because C++ and Java programs typically use exceptions, so this is the right thing to do.



该部分的其余部分提供了一种可能的解决方法(出现),即使用 GCC 驱动程序链接您的共享库,但是如果静态链接的库引发异常,您可能会遇到分段违规。

关于macos - 无法让 GCC 的 -static-libgcc 在 Mac OS X 上与 DYLIB 库一起使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9924632/

34 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com