2012-07-18 91 views
2

我正在尝试为我的应用程序编写一个基于C的小型客户端,用于mongo数据库。首先让我说,现在我很久没有用C语言编程了,所以可能是我面对的问题是一个非常基本的问题!我只是无法让我的代码编译:-)Mac OSX上的MongoDB C驱动程序Lion

我正在使用64位Apple Macbook Pro(OSX Lion)。海合会:

Target: i686-apple-darwin11 
Thread model: posix 
gcc version 4.2.1 (Based on Apple Inc. build 5658) (LLVM build 2335.15.00) 

我GIT克隆mongo c driver,做一个git结帐到0.6,然后跑去做。

make 
make install 
make test 

测试运行良好和库被正确安装在/ usr/local/lib目录/ 与.h文件要正确地到/ usr /本地/包括。

然后我复制粘贴一段代码到一个名为data.c文件,如下所示:

#include <stdio.h> 
#include "mongo.h" 

int main() { 
    mongo conn[1]; 
    int status = mongo_connect(conn, "127.0.0.1", 27017); 
    return 0; 
} 

没什么特别的,只是想打开一个连接。当我尝试编译此问题时,出现以下错误:

gcc --std=c99 -I/usr/local/include -L/usr/local/lib -o data data.c -lmongoc 

Undefined symbols for architecture x86_64: 
    "_mongo_connect", referenced from: 
     _main in ccjPPPVs.o 
ld: symbol(s) not found for architecture x86_64 
collect2: ld returned 1 exit status 

我在做什么错?

+0

也许这可以帮助:http://stackoverflow.com/ question/8034568/undefined-symbols-for-architecture-x86-64-which-architecture-should-i-use – 2012-07-18 12:40:13

+0

nope。最奇怪的是,测试工作,但我的代码甚至没有编译相同的海湾合作委员会:( – aishwarya 2012-07-18 12:53:48

+0

测试的输出记录在某处? – 2012-07-18 13:20:31

回答

1

对于静态库而言,mac链接似乎存在问题。

+0

上发布了测试结果,我得到了'ld:library for -lcrt0 .o' – aishwarya 2012-07-19 13:09:33