0

我是 tokyo cabinet 的新手,我已经安装了它,我已经运行了示例 c 程序,但我遇到了错误......而我用 gcc 编译

gcc -O tcadbex.c 

/tmp/cc7IEOht.o: In function `main':
tcadbex.c:(.text+0xd): undefined reference to `tcadbnew'
tcadbex.c:(.text+0x1f): undefined reference to `tcadbopen'
tcadbex.c:(.text+0x58): undefined reference to `tcadbput2'
tcadbex.c:(.text+0x74): undefined reference to `tcadbput2'
tcadbex.c:(.text+0x90): undefined reference to `tcadbput2'
tcadbex.c:(.text+0xc1): undefined reference to `tcadbget2'
tcadbex.c:(.text+0x10e): undefined reference to `tcadbiterinit'
tcadbex.c:(.text+0x11c): undefined reference to `tcadbget2'
tcadbex.c:(.text+0x156): undefined reference to `tcadbiternext2'
tcadbex.c:(.text+0x164): undefined reference to `tcadbclose'
tcadbex.c:(.text+0x18d): undefined reference to `tcadbdel'
collect2: ld returned 1 exit status

谁能告诉我这是什么问题...

4

1 回答 1

1

是的,您几乎可以肯定必须链接到 Tokyo Cabinate 的库文件(无论是什么)。

通常,您会使用如下命令:

gcc -o tcadbex -L/usr/lib -lxyz tcadbex.c

在哪里:

  • -L指定库的搜索路径。
  • -l列出库以搜索未定义的符号。

并且链接器将按照某些规则来查找库,以将xyz文件名转换为libxyz.so.

事实上,在网上搜索会发现这一点(在一行中,我只是为了便于阅读而将其拆分):

gcc -I/usr/local/include tc_example.c -o tc_example
    -L/usr/local/lib -ltokyocabinet -lz -lbz2 -lrt -lpthread -lm -lc

作为要使用的命令行。

所以我建议您需要针对您的具体情况(再次,在一行上):

gcc -I/usr/local/include tcadbex.c -o tcadbex
    -L/usr/local/lib -ltokyocabinet -lz -lbz2 -lrt -lpthread -lm -lc
于 2010-08-24T08:19:25.813 回答