我正在尝试为我的应用程序为mongo db编写一个基于C的小客户端。让我首先说我现在很长时间没有在C中编程,所以我面临的问题可能是一个非常基本的问题!我只是无法编译我的代码: - )
我正在使用64位Apple Macbook Pro(OSX Lion)。 gcc是:
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 checkout到0.6然后运行make。
make
make install
make test
测试运行正常,库已正确安装在/ usr / local / lib /中 .h文件正确地转到/ usr / local / include。
然后我将一段代码粘贴到名为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 :(得分:2)
现在,Mac OS X(Lion)修复了Mongo-C-driver动态库构建,请参阅
https://github.com/mongodb/mongo-c-driver/commit/ea89d8fa966ccf601a67e1507e67e829775f6bcb
答案 1 :(得分:1)
mac-link上似乎存在一个问题,而不是静态库。