2016-11-11 7 views
1

上のmongo-CXX-ドライバーの静的libには使用できません:https://mongodb.github.io/mongo-cxx-driver/mongocxx-v3/installation/は、だから私は、インストールのための公式のチュートリアルに従うのLinux

Neverlessを、私はstaticとして作製されたライブラリーを使用することはできません。説明したように、私はドライバーのCバージョンをコンパイルするために管理

だから、私は--enable-静的フラグを有効にしている= yesのを行う前には./configureとは& & sudoを作るとIをインストールしますlibmongoc-1.0.alibbson-1.0.aは静的です。これまでのところ、これはすべて大丈夫です。

次に、Cバージョンのような構成ファイルがないことを除いて、ドライバのcxxバージョンを実行しました。だから私はジュスト& & sudoを作る続く、buildフォルダから

cmake -DCMAKE_BUILD_TYPE=Release -DBSONCXX_POLY_USE_BOOST=1 -DCMAKE_INSTALL_PREFIX=/usr/local 

をやった

をインストールしますだから私は libmongocxx.a を持って、 libbsoncxx.a しかし、私はそれらとコンパイルしようとすると、次のエラーが発生したため、バイナリを実行できません。 共有ライブラリの読み込み中にエラーが発生しました:libmongocxx.so._noabi:共有オブジェクトファイルを開くことができません:そのようなファイルまたはディレクトリなし

いくつかのシンボルがありません。共有ライブラリを使用してバイナリを実行する必要がありますが、これが起こらないようにしたいと思います。実行できるバイナリ内のシンボルが必要です。 LD_PRELOADは一切ありません。

提案がありますか?

+0

あなたのアプリケーションをどのようにコンパイルしたかは述べていません。問題を再現できるように[SSCCE](http://sscce.org)を投稿してください。この場合、正確なコマンドライン(またはシェルスクリプト)を含めて出力してください。 – xdg

答えて

0

私はa similar questionを持っています。これで、静的なライブラリを使ってバイナリを正常にコンパイルして実行しました。

私はnewlispを使ってビルドスクリプトを書いていますが、静的リンクオプションはとても役に立ちます。ここに貼り付けます。

c++ /to/your/path/site/code/back_end/builder/object/files1.cc.o ... /to/your/path/site/code/back_end/builder/object/files10.cc.o -o bin/site -static-libgcc -static-libstdc++ -L/usr/lib -lpthread -l:libmongocxx.a -l:libbsoncxx.a -l:libmongoc-1.0.a -l:libbson-1.0.a -lrt -lssl -lcrypto -lsasl2 -l:libboost_log.a -l:libboost_log_setup.a -l:libboost_system.a -l:libboost_thread.a -l:libboost_filesystem.a -lcppcms -lbooster -lcurl -ljsoncpp 
0

私はUbuntuの16.04で同じ問題を持っていたと私はapt-getを&はapt-getをアップグレードし、問題が解決したアップデートを実行します。

コンパイラといくつかのテストが共有ライブラリに到達するのを妨げるいくつかのライブラリが更新されたようです。

関連する問題