5

次のような問題が原因で:

Mac OS X および静的ブースト ライブラリ -> std::string が失敗する

つまり、ブーストファイルシステムディレクトリイテレーターコンストラクターを呼び出すときに、「解放されているポインターが割り当てられていませんでした***デバッグするmalloc_error_breakにブレークポイントを設定してください」という実行時エラーが発生します。ブーストとプログラムが異なるコンパイラでコンパイルされている場合、これが発生する可能性があるというのが私の印象です。

そのため、プログラムに使用しているのと同じコンパイラ、つまり macports gcc (g++-mp-4.8) を使用してブースト ライブラリを再コンパイルしようとしています。いくつかのオンラインの指示に基づいて、tools/build/v2/user-config.jam を編集してコンパイラを指定することを理解しているため、次のように表示されます。

# Configure gcc (default version).
# using gcc ;

# Configure specific gcc version, giving alternative name to use.
# using gcc : 4.8 : g++-mp-4.8 ;

user-config.jam をホーム ディレクトリにコピーし、bootstrap.sh を再実行して、b2 を再実行します。ただし、まだエラーが発生します(「解放されているポインターが割り当てられていませんでした***デバッグするためにmalloc_error_breakにブレークポイントを設定してください」)。これは、コンパイルに使用するコンパイラを指定するための正しい手順ですか? b2 を実行するときに、どのコンパイラ ブーストが実際に使用されているかを確認するにはどうすればよいですか?

4

1 に答える 1

7

Leave user-config.jam in \boost\tools\build\v2. Note that lines beginning from # are comments. Your configuration should look like this (assuming that g++ is located at full/Path/ and named g++-mp4.8):

  using gcc : macports :
         full/Path/g++-mp4.8 :
  <compileflags>--sysroot=full/path/to/sysroot
  ;

You might also need to set <archiver> and <ranlib> options to allow Boost.Build locating ar and ranlib.

Invoke this configuration in b2 line like this:

b2 toolset=gcc-macports

于 2013-03-29T08:45:47.263 に答える