我试图在OSX 10.9 64位上静态链接libc ++
这就是我的所作所为:
1)通过修改libc ++源代码附带的脚本“buildit”,构建一个带有fPIC的libc ++ 64.a。
2)使用fPIC构建我自己的所有源,并将我自己的include路径添加到新的libc ++源包含目录,同时使用-nostdinc ++作为编译标记。
3)链接“../ build / libc ++ 64.a”
我确信它会获取静态库,但它仍然会给我一个错误:
ld: illegal text-relocation to '__ZTVSt9bad_alloc' in /usr/lib/libc++.dylib from '__ZN3slm15ReadProblemFileERNS_5ModelERNS_3LogEPKwb' in bin/clang-darwin-4.2.1/release/address-model-64/threading-multi/read.o for architecture x86_64
我不明白为什么以及它如何定位和使用/usr/lib/libc++.dylib
更新:
当我在同一台机器上为32位执行相同的交叉构建时,构建成功,但我仍然依赖于libc ++。来自otool -L的dylib输出:
bin/clang-darwin-4.2.1/release/address-model-32/threading-multi/libsulum20.dynlib: libsulum20.dynlib (compatibility version 0.0.0, current version 0.0.0) /usr/lib/libSystem.B.dylib (compatibility version 1.0.0, current version 1197.1.1) /usr/lib/libc++.1.dylib (compatibility version 1.0.0, current version 120.0.0)