【问题标题】:Mongo C++ Client Library Doesn't See My BoostMongo C++ 客户端库没有看到我的提升
【发布时间】:2013-05-19 04:23:22
【问题描述】:

我已经下载了 Boost 版本 1.51,构建了它,并将它放到 /usr/local/boost_1_51_0。我还下载了 mongo-cxx-driver-v2.4。由于没有 Makefile,我必须运行 scons,因为这个项目使用的是新的 python 构建环境。当我运行 scons 时,它会检查 boost_thread-mt 和 boost_thread,两者都返回“no”。显然,在 /usr/local 目录中没有看到我有提升。由于我是 Make 而不是 scons 人,我如何让 mongodb 构建过程看到我的 boost 版本?

routerwc:~/mongo_proj/mongo-cxx-driver-nightly # scons --cpppath=/usr/local/boost_1_51_0/ --libpath=/usr/local/boost_1_51_0/stage/lib/
scons: Reading SConscript files ...
Checking for C++ library boost_thread-mt... no
Checking for C++ library boost_thread... no
routerwc:~/mongo_proj/mongo-cxx-driver-nightly # cat config.log 
file /root/mongo_proj/mongo-cxx-driver-nightly/SConstruct,line 70:
Configure(confdir = .sconf_temp)
scons: Configure: Checking for C++ library boost_thread-mt....sconf_temp/conftest_0.cpp <-
|
|
|
|int
|main() {
|  
|return 0;
|}
|
g++ -o .sconf_temp/conftest_0.o -c -O3 -pthread -D_SCONS -DMONGO_EXPOSE_MACROS -Ibuild -Ibuild/mongo .sconf_temp/conftest_0.cpp
g++ -o .sconf_temp/conftest_0 -Wl,--as-needed -Wl,-zdefs -pthread .sconf_temp/conftest_0.o -lboost_thread-mt
/usr/lib64/gcc/x86_64-suse-linux/4.3/../../../../x86_64-suse-linux/bin/ld: cannot find -lboost_thread-mt
collect2: ld returned 1 exit status
scons: Configure: no

scons: Configure: Checking for C++ library boost_thread....sconf_temp/conftest_1.cpp <-
|
|
|
|int
|main() {
|  
|return 0;
|}
|
g++ -o .sconf_temp/conftest_1.o -c -O3 -pthread -D_SCONS -DMONGO_EXPOSE_MACROS -Ibuild -Ibuild/mongo .sconf_temp/conftest_1.cpp
g++ -o .sconf_temp/conftest_1 -Wl,--as-needed -Wl,-zdefs -pthread .sconf_temp/conftest_1.o -lboost_thread
/usr/lib64/gcc/x86_64-suse-linux/4.3/../../../../x86_64-suse-linux/bin/ld: cannot find -lboost_thread
collect2: ld returned 1 exit status
scons: Configure: no

【问题讨论】:

  • 你试过设置cpppath和libpath吗?例如:scons --cpppath=/usr/include/boost141/ --libpath=/usr/lib64/boost141/
  • 我没有。让我试一试。
  • 这仍然不起作用。这是我的情况... ~/mongo_proj/mongo-cxx-driver-nightly # scons --cpppath=/usr/local/boost_1_51_0/ --libpath=/usr/local/boost_1_51_0/stage/lib/ scons: Reading SConscript文件...正在检查 C++ 库 boost_thread-mt... 否 检查 C++ 库 boost_thread... 否 到此为止。这是 boost_thread 库... lrwxrwxrwx 1 root root 182042 2013-05-21 07:35 /usr/local/boost_1_51_0/stage/lib/libboost_thread.so 所以我仍然不确定为什么 scons 没有看到我的 boost 库。
  • SCons 运行的配置步骤应该已经删除了一个 config.log 文件。你能把那个文件的内容贴在某个地方吗?
  • 我已经添加了上面的输出。

标签: c++ mongodb boost build client-library


【解决方案1】:

我遇到了同样的问题,我在 /usr/include/boost_1_57_0 中下载并提取 boost 然后运行

sudo apt-get install libboost-all-dev

然后在目录中我有我运行的 c++ 驱动程序

sudo scons --extrapath=/usr/include/boost_1_57_0

【讨论】:

    【解决方案2】:

    我猜你没有安装库,只是运行 ./b2 而不是 ./b2 install

    您可以尝试以下方法吗?

    scons --extrapath="/usr/local/boost_1_51_0/,/usr/local/boost_1_51_0/stage"

    【讨论】:

      【解决方案3】:

      我解决了这个问题。

      在 SCons 中,测试 boost 库的顺序是错误的。

      打开 SConstruct 文件并更改以下行:

      boostLibs = [ "regex", "thread", "system" ]
      

      boostLibs = [ "system", "regex", "thread" ]
      

      干杯,

      【讨论】:

      • 我把之前的答案放上来了。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2019-10-25
      • 2021-04-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多