简体   繁体   English

无法编译mongo-c-driver示例

[英]cannot compile mongo-c-driver example

I try to write simple mongo c client. 我尝试编写简单的mongo c客户端。 Source file (ac): 源文件(ac):

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

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

int main() {
  return 0;
}

And i try to compile it with: 我尝试编译它:

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

But get an error: 但得到一个错误:

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

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

How can I correctly compile ac? 我怎样才能正确编译ac?

ps mongo-2.0.4, gcc-4.6, mongo-c-driver - pulled from github ps mongo-2.0.4,gcc-4.6,mongo-c-driver - 从github拉出来

update 更新

$ nm /usr/local/lib/libmongoc.so | $ nm /usr/local/lib/libmongoc.so | grep init grep init

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 ac $ gcc -I / usr / local / include -L / usr / local / lib -Wall -Werror -lmongoc ac

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

Try linking the library after the source file, like gcc ac -lmongoc . 尝试在源文件之后链接库,如gcc ac -lmongoc This is because you're using a traditional single-pass linker, which expects to satisfy dependencies with subsequent, not previous, objects specified on the command line. 这是因为您使用的是传统的单通道链接器,它希望满足与命令行中指定的后续而非先前对象的依赖关系。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM