2017-06-11 10 views
0

私はarchを使用しており、私のシステムは最近更新されました。それ以来私はPoint Cloud Libraryを使ってプロジェクトをリンクすることはできません。私は、リンク時にこのエラーメッセージが表示されます。プロジェクトでは古いバージョンのブーストライブラリを使用しています

[100%] Linking CXX executable cloud_viewer 
/usr/bin/ld: warning: libboost_system.so.1.63.0, needed by /usr/lib/gcc/x86_64-pc-linux-gnu/7.1.1/../../../../lib/libpcl_common.so, not found (try using -rpath or -rpath-link) 
/usr/bin/ld: warning: libboost_thread.so.1.63.0, needed by /usr/lib/gcc/x86_64-pc-linux-gnu/7.1.1/../../../../lib/libpcl_common.so, not found (try using -rpath or -rpath-link) 
/usr/bin/ld: warning: libboost_iostreams.so.1.63.0, needed by /usr/lib/gcc/x86_64-pc-linux-gnu/7.1.1/../../../../lib/libpcl_io.so, not found (try using -rpath or -rpath-link) 

私は、実行プログラムがクラッシュした時に、シンボリックリンクlibboost_xxxxx.so.1.63.0 -> libboost_xxxxx.so.1.64.0

を作成しかし、今workesをリンクしながら、試してみました。 私はちょうど古いboot libraryをインストールするか、よりよい解決策がありますか?

+1

古いライブラリをインストールする必要があります。 –

+1

もう一つの選択肢は、現在使用しているものがどれも控除されていないと仮定し、ソースを1.64.0で再コンパイルすることです。コンパイルエラーが発生した場合は、影響を受けるソースを更新し、最適なものが得られることを期待してください。彼らが私の情報源だったら、これは私がやることです。他の人のソースをコンパイルしている場合は、古いバージョンをインストールするだけです。 – Stewart

+1

ポイントクラウドライブラリを更新前のある時点でコンパイルしましたか? –

答えて

1

これを解決するには、2つの方法があります。

  1. は、現在のブーストに対してPCLを再コンパイルし、それはまだ動作します願っています(チャンスが比較的高い)

  2. あなたの現在と一緒にブーストの古いバージョンをインストールします。システムバージョン。私は、一般的な(バージョン管理されていない)シンボリックリンクの作成をいかに正確に防止するかはわかりません(特別なことをする必要はありません)。別のバージョンを維持する簡単な方法は、たとえば、/usrではなく/opt/boost-1.63。

いずれも、最初のものでも全く同じです。

+0

一般的な質問と同じように、古いlibboostバージョンを現在のディレクトリと同じディレクトリにインストールするか、別のディレクトリにインストールする必要がありますか? – Jonas

+1

ヘッダを別のディレクトリに置く必要がありますが、ライブラリそのものをバージョン管理して名前の衝突を防ぐ必要があります。しかし、Boostビルドシステムに依存していますが、バージョン管理されていない名前に自動的にシンボリックリンクされる可能性があります。この場合、適切なPKGBUILDを使用するようにしてください。手動でrootに何もインストールしないでください。代わりに古いバージョンを/ optにインストールする方法があります。これははるかに簡単なオプションです。 – rubenvb

+0

アドバイスありがとうございます!もし私が少しでも尋ねることができれば。 pacmanのキャッシュに古いバージョンのboost libがあり、それを '/ usr/oldlib/boot'に抽出しました。しかし、現在はライブラリのみが存在し、現在はヘッダがあります。それらは新しいバージョンと同じですか? – Jonas

関連する問題