古いバージョンのC++ boostライブラリが含まれているマシンでデモを行う必要があります。具体的にはboost::thread
が必要ですが、mutex
クラスのメンバー関数lock
を使用しています。残念ながら、古いバージョン(1.33.1)にはこのメソッドが含まれていません。以前のバージョンのboost C++を無視する
ターゲットマシンにroot権限を持っていないため、以前のバージョンのboostをアンインストールできません。私の解決策は、ターゲットマシン上の更新されたライブラリをあらかじめコンパイルし、新しいバージョンのライブラリにリンクすることだけでした。
ライブラリーコンパイルの部分がうまくいっていて、すべての問題がなくなりましたが、コンパイルしようとしたときに古いバージョンのブーストが使用されていました。私はちょっと調べましたが(ここではg ++のnoob)、-L
と-I
フラグを使用して、ヘッダとライブラリを探す場所を手動で指定できることがわかりました。私は相対パスでこれらを使用しようとしました(私はデモが実行されるディレクトリを知らないので、私は私の新しいブーストライブラリへの相対パスを知っている)、私はこの思い付いた:
-bash-3.2$ g++ -I./include -L./lib main.cpp -lthread
/usr/bin/ld: cannot find -lthread
collect2: ld returned 1 exit status
私は、インクルード/ライブラリのディレクトリにもっと深いパスを指定するなど、あらゆる種類のものを試してきましたが、運がないので、私は枯れているように感じます。何か案は? 参考までに、私はブースト1.49.0を使用したいと思っています。
ドゥ./libにlibthread.soがありますか? – Attila
./libには、 'libboost_thread.a'、' libboost_thread.so'、 'libboost_thread.so.1.49.0'のファイルがあります。 –