[英]Makefile include erro
我是makefile的新手我在編譯時遇到了這個錯誤。
all: main
main.o:ssh-functions.o mysql_connector.o
g++ -c main.c ssh-functions.o mysql_connector.o -I libuv/include -L libuv/ -luv -lrt -lpthread
ssh-functions.o:ssh-functions.cpp
g++ -c ssh-functions.cpp -lssl -lcrypto
mysql_connector.o: mysql_connector.c
g++ -I/usr/include/mysql/ -c mysql_connector.c -L/usr/include/mysql/ -lmysqlclient
clean:
rm -rf *.o
輸出:
g++ -c ssh-functions.cpp -lssl -lcrypto
g++ -I/usr/include/mysql/ -c mysql_connector.c -L/usr/include/mysql/ -lmysqlclient
g++ -c main.c ssh-functions.o mysql_connector.o -I libuv/include -L libuv/ -luv -lrt -lpthread
In file included from main.c:4:0:
mysql_connector.c:4:19: fatal error: mysql.h: No such file or directory
compilation terminated.
make: *** [main.o] Error 1
您需要在每個編譯器調用上添加-I/usr/include/mysql
,該調用將編譯包含#include <mysql.h>
或等效的源代碼。
你在編譯main.c
那行上錯過了。
提示1:移動-I
(包含搜索路徑) 之前的源代碼文件,你正在編譯,以及-L
(庫搜索路徑)和-l
(庫)部分的代碼文件之后 。 -I
用於首先運行的預處理器。 -L
和-l
用於最后運行的鏈接器。
提示2:除非您確切知道自己在做什么,否則不要使用-lpthread
。 請改用-pthread
。 如果你需要一個編譯,你最有可能需要它用於同一個項目中的所有編譯。 (並將其放在所有內容之前,這會影響完整的編譯,預處理器和鏈接器。)
試試s.th. 像這樣(最終用main.exe
替換main
取決於你的目標OS環境):
MY_INCLPATHS=-I /usr/include/mysql -I libuv/include
MY_LIBPATHS=-L /usr/include/mysql -L libuv/
MY_LIBS=-lmysqlclient -lssl -lcrypto -luv -lrt -lpthread
all: main
main: main.o ssh-functions.o mysql_connector.o
g++ ${MY_LIBPATHS} main.o ssh-functions.o mysql_connector.o ${MY_LIBS} -o main
main.o: main.c
g++ ${MY_INCLPATHS} -c main.c
ssh-functions.o: ssh-functions.cpp
g++ ${MY_INCLPATHS} -c ssh-functions.cpp
mysql_connector.o: mysql_connector.c
g++ ${MY_INCLPATHS} -c mysql_connector.c
clean:
rm -rf main *.o
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.