2

我正在尝试为我的应用程序为 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 驱动程序,执行 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

我究竟做错了什么?

4

2 回答 2

2

Mongo-C-driver 动态库构建现在已针对 Mac OS X (Lion) 修复,请参阅

https://github.com/mongodb/mongo-c-driver/commit/ea89d8fa966ccf601a67e1507e67e829775f6bcb

https://jira.mongodb.org/browse/CDRIVER-158

于 2012-07-28T03:22:02.487 回答
1

mac 上似乎存在问题 - 改为链接静态库。

于 2012-07-18T21:04:18.923 回答