我正在尝试链接到OS X上的静态库.我-static在gcc命令中使用了该标志,但是我收到以下错误消息:
ld_classic: can't locate file for: -lcrt0.o collect2: ld returned 1 exit status
我查看了手册页,它的内容如下:
除非所有库(包括libgcc.a)都已使用-static编译,否则此选项在Mac OS X上不起作用.由于既没有提供libSystem.dylib的静态版本也没有提供crt0.o,因此该选项对大多数人没用.
有没有其他方法可以链接到这个静态库?
当我查看我的库中的符号时nm mylib.a,我看到一些重复的条目,如下所示:
000000000002d130 S __ZN7quadmat11SpAddLeavesC1EPNS_14BlockContainerEPy
00000000000628a8 S __ZN7quadmat11SpAddLeavesC1EPNS_14BlockContainerEPy.eh
Run Code Online (Sandbox Code Playgroud)
通过管道输送c++filt:
000000000002d130 S quadmat::SpAddLeaves::SpAddLeaves(quadmat::BlockContainer*, unsigned long long*)
00000000000628a8 S quadmat::SpAddLeaves::SpAddLeaves(quadmat::BlockContainer*, unsigned long long*) (.eh)
Run Code Online (Sandbox Code Playgroud)
这.eh意味着什么,这个额外符号用于什么?
我发现它与异常处理有关.但为什么这会使用额外的符号?
(我用clang注意到这一点)