1

-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 の指示に従ってブーストをコンパイルしました: http://code.google.com/p/naclports/wiki/InstallingSDL (ただし、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 を構築するためのアドバイスをいただければ幸いです。

ありがとうございました。

4

1 に答える 1

0

NaCl ポートの一部のライブラリは、Linux でのみビルドできます。したがって、boost が x86_64-nacl-ar の代わりにシステム ar を使用することを決定した理由を見つけるか、それらが同じ場所に Linux で VM をインストールする必要があります。

于 2012-07-04T08:50:41.140 に答える