閉じる

お名前.comのレンタルサーバ(RSプラン)で Boost C++ Librariesを使う

9856-0.sh
$ wget https://boostorg.jfrog.io/artifactory/main/release/1.81.0/source/boost_1_81_0.tar.bz2
$ tar xf boost_1_81_0.tar.bz2
$ cd boost_1_81_0
$ ./bootstrap.sh
$ ./b2 install -j2 --prefix=${HOME}/.local/

Linux環境のデフォルトオプションは「link=static,shared threading=multi variant=release」なので、普通はそのままで良いかな。
あとは ccのオプションで「-I ~/.local/include/」、ldのオプションで「-L ~/.local/lib」を渡してやれば良いのだけど、dynamic linkを避けるのなら .aファイルを指定して static linkしてやる必要があるかな。
ただ、普通にリンクするとlibc周りでおかしくなるようで、最終的にヘッダー群のみで動くようにコードを書き換えた。
結構だるいのでできれば回避したいところ。

2023/04/17追記

やはりヘッダーのみの縛りは面倒なので回避方法法を探る。
独自ビルドの gccを使うなんてことをしなければ上述の問題は発生しないのだろうけど、そうもいかない。
なので、boostのビルドにも独自ビルドの gccを使うようにして見たところうまくいった。*1

9856-1.sh
$ wget https://boostorg.jfrog.io/artifactory/main/release/1.82.0/source/boost_1_82_0.tar.bz2
$ tar xf boost_1_82_0.tar.bz2
$ cd boost_1_82_0
$ ./bootstrap.sh
$ cp tools/build/example/user-config.jam .
$ cat <<EOF >>./user-config.jam
# Configure gcc
using gcc : : ${HOME}/.local/bin/gcc : <cxxflags>"-I${HOME}/.local/include/ -L${HOME}/.local/lib64" <linkflags>"-Wl,-rpath -Wl,${HOME}/.local/lib64" ;
EOF
./b2 toolset=gcc --build-dir=build --prefix=${HOME}/.local/ --user-config=user-config.jam --with-filesystem --with-timer install

FYI: 任意のディレクトリにインストールしたgccを使ってBoostライブラリをビルド&インストールする方法


*1 当面必要な filesystemと timerだけビルドするようにしている。

コメントを残す

メールアドレスが公開されることはありません。必須項目には印がついています *

日本語が含まれない投稿は無視されますのでご注意ください。(スパム対策)