簡體   English   中英

不能在Linux上使用mongo-cxx-driver的靜態庫

[英]Can't use static lib of mongo-cxx-driver on Linux

所以我按照官方安裝教程進行操作: https//mongodb.github.io/mongo-cxx-driver/mongocxx-v3/installation/

永遠不會,我不能將生成的庫用作靜態。

所以我設法編譯了驅動程序的C版本, 如上所述 ,我在使用./configure啟用了標志--enable-static = yes ,然后再進行make && sudo make install ,我得到了libmongoc-1.0.alibbson-1.0.a是靜態的。 所以到目前為止,一切都沒問題。

然后我完成了驅動程序的cxx版本,除了C版本中沒有配置文件。 所以我已經做了一個

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

從build文件夾,然后是make && sudo make install

所以我得到了libmongocxx.alibbsoncxx.a ,但是當我嘗試用它們編譯時,我無法運行二進制文件因為我收到以下錯誤: 加載共享庫時出錯:libmongocxx.so._noabi:無法打開共享對象文件:沒有這樣的文件或目錄

所以我理解這是因為有一些符號丟失,然后我需要使用共享庫來運行二進制文件,但我不想發生這種情況,我希望二進制文件中的符號可以在沒有任何LD_PRELOAD的情況下運行它。

有什么建議么 ?

我有一個類似的問題 ,並解決了,現在我成功地編譯並運行我的二進制文件與靜態庫。

我使用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

我在Ubuntu 16.04中遇到了同樣的問題,我運行了apt-get update和apt-get升級,問題解決了。

似乎有一些更新編譯器和一些庫阻止某些測試到達共享庫。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM