【问题标题】:How can I compile the Mongodb-c-driver program?如何编译 Mongodb-c-driver 程序?
【发布时间】:2014-07-01 10:50:35
【问题描述】:

我用

gcc -o mongotest mongotest.c $(pkg-config --cflags --libs libmongoc-1.0)

用于编译mongodb c驱动代码,然后

LD_LIBRARY_PATH=/usr/local/lib ./mongotest

为了跑步。

如果我尝试不使用 LD_LIBRARY_PATH=/usr/local/lib 我有

./mongotest: error while loading shared libraries: libmongoc-1.0.so.0: cannot open shared object file: No such file or directory

如何在没有 LD_LIBRARY_PATH=/usr/local/lib 的情况下运行程序, 这样做是否正确?如何调试 mongodb c 驱动程序?

【问题讨论】:

    标签: c linux mongodb linker


    【解决方案1】:

    路径/usr/local/lib 应位于/etc/ld.so.conf/etc/ld.so.conf.d/ 目录中的一个文件中。因此,当您以 root 身份发出命令 ldconfig 时,库 mongoc 将进入缓存。

    您可以通过执行此命令检查库mongoc 是否在动态链接器缓存中

    ldconfig -p | grep mongoc
    

    如果在不明确指定 LD_LIBRARY_PATH 的情况下运行程序是安全的。

    检查可执行文件是否正确链接的其他方法是使用ldd 命令获取链接信息。它将打印所有链接的库。

    ldd mongotest
    

    如果您可以看到/usr/local/lib/libmongoc.so.[numbers],则表示它与mongoc 库链接。

    【讨论】:

    • 我只是想提供个人道具,以适当地重新标记问题并在正确的上下文中回答。对于其他观察者来说,问题上唯一的标签就是“mongodb”。
    • @NeilLunn 我怀疑是否应该删除mongodb 标签,如果您对此有信心,请这样做。
    • 我认为 mongodb 标签仍然是相关的,因为它与 c 驱动程序源有关。这是一个编程论坛吧?我很高兴您认为这主要是一个“C”问题。并适当地回答和标记。所以一切都完全有效。很好的回答和处理。
    猜你喜欢
    • 1970-01-01
    • 2011-11-19
    • 2017-11-07
    • 1970-01-01
    • 1970-01-01
    • 2010-10-08
    • 1970-01-01
    • 2022-07-09
    • 2018-05-10
    相关资源
    最近更新 更多