0

次のコマンドを使用して、QNX OS (x86) をターゲットとする Windows でブーストを正常にクロスコンパイルできます。b2 toolset=qcc target-os=qnx threadapi=pthread

ただし、何らかの理由で、結果のライブラリ ファイルが内部の依存関係に正しくリンクしていないようです。

たとえば、単体テスト フレームワークで objdump を実行すると、次のようになります。

Dynamic Section:
   NEEDED               bin.v2\libs\timer\build\qcc\release\target-os-qnx\threadapi-pthread\threading-multi\libboost_timer-qcc-mt-1_60.so.1.60.0
   NEEDED               bin.v2\libs\system\build\qcc\release\target-os-qnx\threadapi-pthread\threading-multi\libboost_system-qcc-mt-1_60.so.1.60.0
   NEEDED               libm.so.2
   NEEDED               libc.so.3

ご覧のとおり、タイマーとシステム ライブラリの両方にリンクするためのばかげたパスがあります (また、Linux のような QNX は「\」をエスケープ文字として解釈するため、QNX マシンでフォルダー構造を使用できません)。 . ライブラリのバイナリ ファイルを手動で編集し、パスを削除しました (これは非常に危険であることはわかっています...)。

Dynamic Section:
   NEEDED               libboost_timer-qcc-mt-1_60.so.1.60.0
   NEEDED               libboost_system-qcc-mt-1_60.so.1.60.0
   NEEDED               libm.so.2
   NEEDED               libc.so.3

これは機能します。Boost にパス全体をライブラリに含めないように強制することはできますか? これはブーストの問題ですか、それとも QNX 6.6 qcc ツールチェーンの問題ですか? 各ライブラリのバイナリ ファイルを手動で編集したくありません...

4

1 に答える 1