将-lboost_thread链接到google Native Client(pepper_19)上的可执行文件时收到此错误:
nacl_sdk / pepper_19 / toolchain / mac_x86_glibc / x86_64-nacl / usr / lib / libboost_thread.a:无法读取符号:存档没有索引;运行ranlib添加一个
我根据naclports的说明编译了boost:http://code.google.com/p/naclports/wiki/InstallingSDL(除了使用boost库目录而不是SDL ...我也使用同样的过程来正确编译NaCl zlib库)
cd naclports/src/libraries/boost_1_47_0
export NACL_PACKAGES_BITSIZE=32; ./nacl-boost_1_47_0.sh
export NACL_PACKAGES_BITSIZE=64; ./nacl-boost_1_47_0.sh
这会生成libboost_thread.a文件并将它们放在我的NACL安装的/ usr / lib目录中。我想也许不知何故我错误地构建了一个错误类型的库来连接NaCl。有没有办法检查和/或修复它?
我试过了:
cd naclports/src/out/repository-x86_64/boost_1_47_0/bin.v2/libs/thread/build/darwin-4.2.1/release/link-static/threading-multi
nm libboost_thread.a
这就产生了:
libboost_thread.a(thread.o):
0000000000052d08 s EH_frame0
000000000004f50c s GCC_except_table100
000000000004f534 s GCC_except_table101
000000000004f574 s GCC_except_table102
000000000004f5c0 s GCC_except_table103
000000000004f600 s GCC_except_table104
000000000004f64c s GCC_except_table105
000000000004f68c s GCC_except_table106
000000000004f6d8 s GCC_except_table107
.
.
.
.
等等。 然而我跑了:
nacl_sdk / pepper_19 / toolchain / mac_x86_glibc / bin / x86_64-nacl-nm libboost_thread.a
得到了:
__.SYMDEF SORTED: File format not recognized
nacl_sdk/pepper_19/toolchain/mac_x86_glibc/bin/x86_64-nacl-nm: thread.o: File format not recognized
nacl_sdk/pepper_19/toolchain/mac_x86_glibc/bin/x86_64-nacl-nm: once.o: File format not recognized
最后。我跑了:
file pthread/thread.o
pthread/thread.o: Mach-O 64-bit object x86_64
然而,zlib对象文件上的相同命令会导致:
ELF 64-bit LSB relocatable, x86-64, version 1, not stripped
我很感激建立正确交叉编译的NaCl libboost_thread.a
的建议谢谢。
答案 0 :(得分:0)
NaCl端口中的一些库只能在linux上构建。因此,您必须找到为什么boost决定使用system ar而不是x86_64-nacl-ar,或者在linux中使用linux安装VM。