14

Mac osx10.8.2でclang3.1を使用してboostをコンパイルできません。

これは私がしたことです:

./bootstrap.sh --with-toolset=clang
./b2 toolset=clang cxxflags="-std=c++11 -stdlib=libc++" linkflags="-stdlib=libc++"

また、クロノ、テスト、ウェーブ、シグナルなしで試しました。user-config.jamを試してみました

using clang-darwin

これは、ほとんどすべてのファイルで発生するエラーです。

/boost/config/select_stdlib_config.hpp:18:12: fatal error: 'cstddef' file not found

これは、 Boostをclang ++ / libc ++でコンパイル/リンクする方法に似ていますか?

ありがとうございました :-)

更新:コマンドラインツールがインストールされた最新のXcode4.5.2を持っています。

コンソール出力の一部は次のとおりです。

Kikohs:trunk kikohs$ ./b2 toolset=clang cxxflags="-std=c++11 -stdlib=libc++" linkflags="-stdlib=libc++"
Performing configuration checks

- 32-bit                   : no
- 64-bit                   : yes
- x86                      : yes
- has_icu builds           : no
warning: Graph library does not contain MPI-based parallel components.
note: to enable them, add "using mpi ;" to your user-config.jam
    - gcc visibility           : yes
    - long double support      : no
warning: skipping optional Message Passing Interface (MPI) library.
note: to enable MPI support, add "using mpi ;" to user-config.jam.
note: to suppress this message, pass "--without-mpi" to bjam.
note: otherwise, you can safely ignore this message.

BoostC++ライブラリの構築。

- iconv (libc)             : no
- iconv (separate)         : yes
- icu                      : no
- icu (lib64)              : no

コンポーネント構成:

- atomic                   : building
- chrono                   : building
- context                  : building
- date_time                : building
- exception                : building
- filesystem               : building
- graph                    : building
- graph_parallel           : building
- iostreams                : building
- locale                   : building
- math                     : building
- mpi                      : building
- program_options          : building
- python                   : building
- random                   : building
- regex                    : building
- serialization            : building
- signals                  : building
- system                   : building
- test                     : building
- thread                   : building
- timer                    : building
- wave                     : building

...patience...
...patience...
...patience...
...patience...
...found 8672 targets...
...updating 1127 targets...
common.mkdir bin.v2/libs/atomic
common.mkdir bin.v2/libs/atomic/build
common.mkdir bin.v2/libs/atomic/build/clang-darwin-4.2.1
common.mkdir bin.v2/libs/atomic/build/clang-darwin-4.2.1/debug
clang-darwin.compile.c++ bin.v2/libs/atomic/build/clang-darwin-4.2.1/debug/lockpool.o
In file included from libs/atomic/src/lockpool.cpp:1:
./boost/atomic.hpp:10:10: fatal error: 'cstddef' file not found
#include <cstddef>
     ^
1 error generated.

"clang++" -x c++ -O0 -g -std=c++11 -stdlib=libc++ -O0 -fno-inline -Wall -g -DBOOST_ALL_NO_LIB=1 -DBOOST_ATOMIC_DYN_LINK=1 -DBOOST_ATOMIC_SOURCE -I"." -c -o "bin.v2/libs/atomic/build/clang-darwin-4.2.1/debug/lockpool.o" "libs/atomic/src/lockpool.cpp"
4

3 に答える 3

6

clangと一緒にlibc++ヘッダーをインストールするのを忘れたようです。

ヘッダーのインストールを台無しにしたくない場合は、コマンドラインツールパッケージの一部としてAppleから配布されているバージョンのclangを試してください。それはより多くのテストを経ており、すでに適切に設定されています。

于 2012-11-15T19:37:03.607 に答える
4

私は何時間も経ってようやく問題を解決しました。

Homebrewが私のパスをいじっていて、何らかの理由で私のclangがlibc++ヘッダーを見つけることができませんでした。

ブースト1.52というバグがあります。

数値制限のブーストバグを参照してください

私はファイルを編集しなければなりませんでした:

boost/config/stdlib/libcpp.hpp

パッチを当てます:

#if _LIBCPP_VERSION < 1002 
#   define BOOST_NO_CXX11_NUMERIC_LIMITS 
#endif 

現在、ブーストは適切に構築されています...

于 2012-11-15T22:16:51.587 に答える
-3

Ubuntu 16.04の場合、gccを使用してc++11でブーストをビルドできます。

cd / home / user / install / boost / boost_1_54 /

./bootstrap.sh --with-toolset = gcc

./b2 toolset = gcc cxxflags = "-std = c ++ 11 -I / usr / include / c ++ / 5 / -I / usr / include / x86_64-linux-gnu / c ++ / 5 /"

mkdir ../ 2

./b2 install --prefix = ../ 2 /

私のプログラムを構築するためのコマンド:

g ++ -std = c ++ 11 -O2 fprint.cpp -o fprint -I / home / user / install / boost / 2 / include / -L / home / user / install / boost / 2 / lib / -lboost_regex -lboost_program_options

その前のコマンドは次のとおりです。

g ++ -std = c ++ 11 fprint.cpp -o fprint -lboost_regex -lboost_program_options

、しかし、この古いコマンド(以前は古いOSやboost / etcでうまく機能していました)は、「boost ::re_detail_106501への未定義の参照」(/tmp/cc0Zn8lo.oによると:関数 `bool boost: :regex_search ...)

((./b2に "-I / usr / include / c ++ / 5 / -I / usr / include / x86_64-linux-gnu / c ++ / 5 /"を使用しない場合も、エラーは "cannotブーストの構築中にcstddef"を見つけるので、このチケットの件名とまったく同じです))

于 2018-05-08T15:47:27.783 に答える