2013-02-18 69 views
6

我尝试编写简单的mongo c客户端。源文件(AC):无法编译mongo-c-driver示例

#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 /本地/包括/蒙戈。 h和/usr/local/lib/libmongoc.so存在

如何正确编译ac?

p.s.蒙戈-2.0.4,GCC-4.6,蒙戈-C驱动器 - 从GitHub

更新

$纳米/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 /本地/ -L包括在/ usr/local/lib目录-Wall -Werror -lmongoc交流

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

尝试运行'nm /usr/local/lib/libmongoc.so | grep init'并告诉我们它说了什么。另外,用'gcc -Wall -Werror'编译。 – 2013-02-18 11:22:05

+0

@John Zwinck查看更新 – user1312837 2013-02-18 11:27:20

回答

6

尝试源文件后,库链接,如gcc a.c -lmongoc。这是因为您正在使用传统的单通链接程序,该链接程序预期会满足对命令行中指定的后续对象(而非之前的对象)的依赖关系。

+1

对我感到羞耻!它的工作原理,谢谢 – user1312837 2013-02-18 11:38:21