2013-02-18 8 views
6

私は単純なmongoクライアントを作成しようとしています。ソース・ファイル(AC):mongo-cドライバの例をコンパイルできません

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

しかし、エラーを取得:

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

ファイルは/ usr/local /含める/モンゴを

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

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

int main() { 
    return 0; 
} 

、私はとそれをコンパイルしてみてください。 hと/usr/local/lib/libmongoc.soが存在する

どのようにしてACを正しくコンパイルできますか?

p.s.モンゴ-2.0.4、GCC-4.6、モンゴ-C-ドライバ - githubのから

を引っ張っ更新

$ 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//ローカルが

/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'でコンパイルしてください。 –

+0

@John Zwinck更新を参照してください – user1312837

答えて

6

は、ソースファイルの後にライブラリをリンクしてみ-Lは/ usr/local/libに-Wall -Werror -lmongoc交流を含め、 gcc a.c -lmongocのようになります。これは、従来のシングルパスリンカを使用しているためです。これは、コマンドラインで指定されたオブジェクトではなく、後続のオブジェクトとの依存関係を満たすことを期待しています。

+1

私に恥が!それは動作します、ありがとう – user1312837

関連する問題