0

古いバージョンの C++ ブースト ライブラリを含むマシンでデモを行う必要があります。具体的には、クラスのメンバー関数をboost::thread使用している が必要です。残念ながら、古いバージョン (1.33.1) にはこのメソッドが含まれていません。lockmutex

ターゲット マシンにルート アクセス権がなく、以前のバージョンのブーストをアンインストールできません。私の解決策は、ターゲット マシンで更新されたライブラリをプリコンパイルし、新しいバージョンのライブラリにリンクするだけでした。

ライブラリのコンパイル部分はうまくいき、すべてが滞りなく進みましたが、コンパイルしようとすると、古いバージョンのブーストを使用していることを示していました。少し調べてみたところ (ここでは 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

インクルード/ライブラリディレクトリのより深いパスを指定するなど、あらゆる種類のことを試してきましたが、運がなく、行き止まりにいるように感じます. 何か案は?参考までに、boost 1.49.0 の使用を検討しています。

4

1 に答える 1

1

試す:

g++ -I./include -L./lib main.cpp -lboost_thread

指定する必要があるライブラリの名前は-l、ファイルから取得され.soます。先頭lib.so(例: libboost_thread.so-> -lboost_thread)は省略します。

于 2012-04-16T01:46:10.450 に答える