'ld' не может связать символы, хотя они находятся в библиотеке - PullRequest
4 голосов
/ 16 марта 2012

У меня проблема при попытке скомпилировать и связать мою программу с "dmalloc".

bin
+--dmalloc

include
+--dmalloc.h

lib
+--libdmalloc.a
+--libdmallocth.a

main.c

У меня следующая структура каталогов

Теперь я пытаюсь скомпилировать мою программу с помощью следующей команды:

gcc -Iinclude -Llib -ldmalloc -DDMALLOC main.c
/tmp/ccSDFmWj.o: In function `main':
main.c:(.text+0x29): undefined reference to `dmalloc_malloc'
collect2: ld returned 1 exit status

Хорошо, я понял, что есть проблема со связыванием символов, ld просто не может найти ссылку на dmalloc_malloc. Однако ...

nm lib/libdmalloc.a | grep dmalloc_malloc
0000000000001170 T dmalloc_malloc
0000000000000fe0 t dmalloc_malloc.part.6

Я озадачен ... В этой библиотеке есть символ. Почему у 'ld' с этим проблемы?

1 Ответ

5 голосов
/ 16 марта 2012

Список библиотек последняя :

gcc -Iinclude -Llib -DDMALLOC main.c -ldmalloc
...