1

必要な .so ファイルへの絶対パスが/home/dev/casablanca/Release/build.release/Binaries/libcpprest.so. 私がやりたかったのは、次のコマンドで簡単にリンクできるように、cpその .so ファイルを/usr/lib/..デフォルトの lib 検索へのパスに単純に貼り付けることでした。../

g++ index.cpp -I/home/dev/casablanca/Release/include -lcpprest -std=c++11

これは正常にコンパイルされましたが、./a.out を実行すると、典型的なランタイム エラーが発生しました。

couldn't load shared library: libcpprest.so

libcpprest.so のデフォルト パスを LD_LIBRARY_PATH に追加した後でも。

ただし、バイナリが最初に作成されたディレクトリをリンクすると、すべてが正常に機能しました。

// ./a.out runs just fine
g++ index.cpp -I/home/dev/casablanca/Release/include \
   -L/home/dev/casablanca/Release/build.release/Binaries -lcpprest -std=c++11

.so オブジェクトを追加したい場所に単純に移動できない理由は、何らかの形でコンパイラが参照を保持しているためだと推測しています。このバイナリを別のパスにインストールするにはどうすればよいですか?

4

2 に答える 2

1

Linux debian ( https://git01.codeplex.com/casablanca ) でcasablancaを手順https://casablanca.codeplex.com/wikipage?title=Setup%20and%20Build%20on%20Linux&referringTitle=Documentationでコンパイルしました

コンパイル後、私はそれで libcpprest.so を取得します (objdump):

SONAME libcpprest.so.2.2

libcpprest.so.2.2 を /usr/lib/libcpprest.so.2.2 にコピーするとよいでしょう。

または、ldconfig ツールを使用してこれを行います。

Release/build.release/Binaries を調べると、次のことがわかります。

libcpprest.so -> libcpprest.so.2.2
libcpprest.so.2.2

libcpprest.soは単なるリンクであり、実際のライブラリは libcpprest.so.2.2 です。

于 2014-11-06T07:38:48.523 に答える