0

ポートから g++4.8 をインストールして、Mac でブースト ライブラリをビルドしようとしています。

~/user-config.jam を作成using gcc : : g++-mp-4.8 ;し、g++ 4.8 コンパイラを使用する行を 1 行追加しました。私はbjamとb2を一緒にインストールしましbrew install bjamた。

b2問題は、コマンドでブーストをビルドすると、次のリンク エラーが発生することです。

ld: unknown option: -R
collect2: error: ld returned 1 exit status

これは、Apple の g++ 4.2 のように g++4.8 が -R オプションを認識できないためです。

g++4.8 のビルド オプションを設定するにはどうすればよいですか? これは、b2 が使用するコマンドです。構成情報についてはこのサイトを持っていますが、ツールセットの構成をセットアップするための有用な情報を見つけることができませんでした。

"g++-mp-4.8"  -Wl,-R -Wl,"/System/Library/Frameworks/Python.framework/Versions/2.7/lib" 
-Wl,-R -Wl,"/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/config"  -o 
"stage/lib/libboost_system.dylib" -Wl,-h -Wl,libboost_system.dylib -shared -Wl,--start-group 
"bin.v2/libs/system/build/gcc-4.8.0/release/threading-multi/error_code.o"  -Wl,-Bstatic  -Wl,
-Bdynamic  -Wl,--end-group  
4

1 に答える 1

1

これは、g++ で dylib ファイルを生成する際のエラーです。g ++でdylibファイルを生成する必要はないと思いますが、エラーを取り除く方法を見つけました。生成された dylib がうまく動作するかどうかは確認しませんでした。スタティック ライブラリのファイルは問題なく取得できたので、g++4.8 でライブラリを使用しても問題ありません。

問題は、g++ が認識できない多くのオプションがあることです: -h -B -R dylib ファイルをビルドするとき。静的ライブラリだけが必要な場合は、入手できます。

オプションを指定しないように gcc.jam ファイルを変更する必要がありました。

.../tools/build/v2/tools/gcc.jam から

間違ったオプションを生成するコードのコメントを外します。

-B オプションを削除する 855 ~ 858 行

# toolset.flags $(toolset).link FINDLIBS-ST-PFX
#     $(condition)/<runtime-link>shared : -Wl,-Bstatic : unchecked ;
# toolset.flags $(toolset).link FINDLIBS-SA-PFX
#     $(condition)/<runtime-link>shared : -Wl,-Bdynamic : unchecked ;

-R オプションを削除する行 815 ~ 820

#toolset.flags $(toolset).link OPTIONS     $(condition)/<strip>on : -Wl,--strip-all   : unchecked ;
#toolset.flags $(toolset).link RPATH       $(condition)           : <dll-path>        : unchecked ;
#toolset.flags $(toolset).link RPATH_LINK  $(condition)           : <xdll-path>       : unchecked ;
#toolset.flags $(toolset).link START-GROUP $(condition)           : -Wl,--start-group : unchecked ;
#toolset.flags $(toolset).link END-GROUP   $(condition)           : -Wl,--end-group   : unchecked ;

-h オプションを削除する 479 行目

#SONAME_OPTION = -h ;
于 2013-07-02T21:49:58.427 に答える