Сбой GCC 4.8 при соединении с libmagic

Я борюсь с проблемой, связывая мой код с 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. Вот. Я проверил, и эта проблема также появляется. Очевидно, что libmagic и libmagic-dev установлены в моей системе (Ubuntu 14.04).

Есть ли способ решения этой проблемы, кроме понижения версии GCC?

0

Решение

Это часто задаваемые вопросы, не связанные с вашей версией GCC.

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

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

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

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

0

Другие решения


По вопросам рекламы [email protected]