2012-05-09 161 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:library找不到-l -l/usr/local/mysql/lib/ collect2:ld返回1退出狀態爲什麼? – Nick

+0

@Nick,因爲'-l'和'-L'之間沒有空格,所以它認爲整個'-L ...'選項是一個庫名稱。順便說一句,你爲什麼還要在裏面放一個裸庫說明符('-l')? – paxdiablo