次のコマンドを使用して、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 ツールチェーンの問題ですか? 各ライブラリのバイナリ ファイルを手動で編集したくありません...