2012-05-09 1 views
1

Я пытаюсь скомпилировать с этой командной строки (в OSX):C компилятор не находит файлы заголовков

gcc -Wall upload-comments.c -l -o upload-comments -I/usr/local/mysql/include/ -L/usr/local/mysql/lib/ -lmysqlclient

Он возвращается с ошибкой:

upload-comments.c:14:20: error: mysql.h: No such file or directory

mysql.h явно находится в /usr/local/mysql/include/

Почему он не находит файл заголовка?

Спасибо.

ответ

1

Вам необходимо поставить -I... бит до исходных файлов, которые в этом нуждаются.

gcc -Wall 
    -I/usr/local/mysql/include/ 
    upload-comments.c 
    -l 
    -o upload-comments 
    -L/usr/local/mysql/lib/ 
    -lmysqlclient 

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

Я также не знаю, почему у вас есть спецификатор имен голых библиотек (-l без фактического имени библиотеки). Кажется, что это может вызвать проблемы для меня, но это не имеет отношения к конкретной проблеме.

Возможно, вы захотите удалить его, если после исправления вашей команды в соответствии с этим ответом у вас все еще есть проблемы.

+0

Фантастический! Он нашел их. Теперь он просто говорит «i686-apple-darwin11-llvm-gcc-4.2: -Wall: нет такого файла или каталога». Почему он не принимает '-Wall'? – Nick

+0

Я вынул '-Wall', а затем получил ld: библиотека не найдена для -l-L/usr/local/mysql/lib/ collect2: ld вернулся 1 статус выхода' Почему? – Nick

+0

@ Ник, потому что у вас нет пробела между '-l' и' -L', поэтому он считает, что вся опция -L ... 'является именем библиотеки. Почему у вас, например, есть какой-то голый спецификатор библиотеки ('-l')? – paxdiablo