我用
gcc -o mongotest mongotest.c $(pkg-config --cflags --libs libmongoc-1.0)
用于编译mongodb c驱动程序代码,然后
LD_LIBRARY_PATH=/usr/local/lib ./mongotest
for run。
如果我尝试没有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驱动程序?
答案 0 :(得分:10)
路径/usr/local/lib
应位于/etc/ld.so.conf
或/etc/ld.so.conf.d/
目录中的某个文件中。因此,当您以root身份发出命令mongoc
时,库ldconfig
将进入缓存。
您可以通过执行此命令来检查库mongoc
是否在动态链接器缓存中
ldconfig -p | grep mongoc
如果是,那么在没有明确指定LD_LIBRARY_PATH的情况下运行程序是安全的。
检查可执行文件是否正确链接的其他方法是通过ldd
命令获取链接信息。它将打印所有链接的库。
ldd mongotest
如果您看到/usr/local/lib/libmongoc.so.[numbers]
,则表示它与mongoc
库链接。