2010-08-24 3 views
0

Я новичок в токио шкафу и я установил его и я запустить пример С программы я получаю сообщение об ошибке ... в то время как я компиляции с GCCпроблема компиляции в токио программы cabinate C

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 

может кто-нибудь скажет мне, в чем проблема с этим ...

ответ

1

Да, вам почти наверняка придется связать файлы библиотеки для Tokyo Cabinate (что бы это ни было).

Как правило, вы должны использовать команду типа:

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

где:

  • -L определяет пути поиска библиотек.
  • -l перечисляет библиотеки для поиска неопределенных символов.

и компоновщик будет искать для библиотек, следуя определенным правилам для превращения xyz в имя файла, как libxyz.so.

В самом деле, поиск в сети появляется this (на одной линии, я просто разделив его для удобства чтения):

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 
+0

я получаю это, если я запустить выше ЦМД ..но мой Java API прекрасно работает ,,, но Мне нужно это в c /usr/bin/ld: не удается найти -ltcadb collect2: ld возвращен 1 статус выхода – raj

+0

@raj, проверьте обновление, библиотека имеет другое имя, которое я использовал в качестве примера. – paxdiablo