无法编译 mongo-c-driver 示例

标签 c mongodb mongo-c-driver

我尝试编写简单的 mongo c 客户端。源文件(a.c):

#include <stdio.h>
#define MONGO_HAVE_STDINT
#include <mongo.h>

void mongo_init_c(mongo *con)
{
  mongo_init(con);
}

int main() {
  return 0;
}

我尝试编译它:

gcc -I/usr/local/include -L/usr/local/lib -lmongoc a.c

但是得到一个错误:

a.c:(.text+0xd): undefined reference to `mongo_init'

文件/usr/local/include/mongo.h 和/usr/local/lib/libmongoc.so 存在

如何正确编译 a.c?

附言mongo-2.0.4、gcc-4.6、mongo-c-driver - 从 github 拉取

更新

$ nm/usr/local/lib/libmongoc.so | grep 初始化

000034e0 T _init
0000dd10 T bson_init
0000c740 T bson_init_data
0000c7b0 T bson_init_finished_data
0000dc10 T bson_init_size
0000d060 T bson_iterator_init
0000a5e0 T gridfile_init
00009af0 T gridfile_writer_init
000095e0 T gridfs_init
00010a18 R initialBufferSize
00005f40 T mongo_cursor_init
00008da0 T mongo_env_sock_init
00005d90 T mongo_init
000057b0 T mongo_init_sockets
00004800 T mongo_md5_init
00005e40 T mongo_replica_set_init
00005f00 T mongo_replset_init
00005b80 T mongo_write_concern_init

$ gcc -I/usr/local/include -L/usr/local/lib -Wall -Werror -lmongoc a.c

/tmp/cccuNEp1.o: In function `mongo_init_c':
a.c:(.text+0xd): undefined reference to `mongo_init'

最佳答案

尝试在源文件之后链接库,例如 gcc a.c -lmongoc。这是因为您使用的是传统的单 channel 链接器,它希望满足与命令行上指定的后续对象的依赖关系,而不是之前的对象。

关于无法编译 mongo-c-driver 示例,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14934980/

相关文章:

mysql - 如何在 MongoDB ObjectID 中从旧版 MySQL 数据库中转换整数 PK ?

python - 在 Ubuntu 上安装 Monary 0.4 时出错

c - 接受 C 字符串输入中的空格

c++ - 围绕点的最小凸多边形

javascript - MongoDB 最后不存储新文档

c++ - MongoDB C++ 驱动程序 - 未解析的外部符号

mongodb - mongo-c-driver 找不到 libbson

c - 需要帮助在 C 中将结构传递给本地函数

c++ - 运算符 < 和 > 如何与指针一起使用?

javascript - 在nodejs中一段时间​​后挂断http连接