簡體   English   中英

Makefile包括erro

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM