2013-02-18 50 views
6

Tôi cố gắng viết ứng dụng khách mongo c đơn giản. tập tin nguồn (ac):không thể biên dịch ví dụ 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; 
} 

Và tôi cố gắng để biên dịch nó với:

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

Nhưng nhận được một lỗi:

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

tập tin/usr/local/include/Mongo. h và /usr/local/lib/libmongoc.so tồn tại

Tôi có thể biên dịch ac đúng cách như thế nào?

p.s. Mongo-2.0.4, gcc-4.6, Mongo-c-lái xe - kéo từ github

cập nhật

$ nm /usr/local/lib/libmongoc.so | 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

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

Thử chạy 'nm /usr/local/lib/libmongoc.so | grep init' và cho chúng tôi biết nó nói gì. Ngoài ra, biên dịch với 'gcc -Wall -Werror'. –

+0

@John Zwinck xem cập nhật – user1312837

Trả lời

6

Hãy thử liên kết thư viện sau khi các tập tin nguồn, như gcc a.c -lmongoc. Điều này là do bạn đang sử dụng một trình liên kết một lần truyền thống, mà hy vọng sẽ đáp ứng các phụ thuộc với các đối tượng tiếp theo, không phải trước đó được chỉ định trên dòng lệnh.

+1

Xấu hổ với tôi! Nó hoạt động, cảm ơn bạn – user1312837

Các vấn đề liên quan