2015-09-03 1 views
0

Я борюсь с проблемой в то время как связывая мой код против libmagic:GCC 4.8 терпит неудачу во время связывания с libmagic

test.c:(.text+0x16): undefined reference to `magic_open' 
test.c:(.text+0x50): undefined reference to `magic_load' 
test.c:(.text+0x60): undefined reference to `magic_error' 
test.c:(.text+0x84): undefined reference to `magic_close' 
test.c:(.text+0x9e): undefined reference to `magic_file' 
test.c:(.text+0xba): undefined reference to `magic_close' 
collect2: ld returned 1 exit status 

Однако возникает вопрос только тогда, когда GCC версии> 4.4. Для компиляции, я использую следующую команду:

gcc -L/usr/lib/ -lmagic test.c -o test 

приведен пример кода, который использует libmagic может быть найден here. Я проверил и эта проблема появляется. Очевидно, libmagic и libmagic-dev установлены в моей системе (Ubuntu 14.04).

Есть ли способ справиться с этой проблемой, отличающейся от версии gcc с понижением рейтинга?

+0

Я остановился, потому что ваш вопрос не показал достаточного количества исследований. Вы получите ответы на свои ответы в Интернете. –

ответ

0

Это FAQ, не связанный с вашей версией GCC.

Я не думаю, что ваш сборник удалось с gcc-4.3

ордена аргументов gcc материи много (смотри, например, this); объектные файлы и библиотеки должны идти последними (от высокоуровневых до низкоуровневых). Попробуйте с

gcc -Wall -g test.c -lmagic -o mytest 

BTW, не называйте свой исполняемый файл test (но например mytest), поскольку test часто встроенная команда оболочки.