[英]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.a和libbson-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.a和libbsoncxx.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.