0

私はメイクファイルを初めて使用します。コンパイル中にこのエラーが発生します。

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
4

2 に答える 2

1

試してみてください。このように(最終的にはこれに置き換えmainmain.exe、ターゲット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
于 2013-02-23T20:55:45.900 に答える
1

または同等のもの-I/usr/include/mysqlを含むソース コードをコンパイルする各コンパイラ呼び出しにを追加する必要があります。#include <mysql.h>

コンパイルする行にそれがありませんmain.c

ヒント 1: -I(インクルード検索パス) をコンパイルするソース コード ファイルの前に-L移動し、 (ライブラリ検索パス) と-l(ライブラリ) の部分をコード ファイルの後に移動します。は、最初-Iに実行されるプリプロセッサ用です。およびは、最後に実行されるリンカー用です。-L-l

ヒント 2:何をしているのかを正確に理解していない限り、使用しないでください。代わりに-lpthread使用してください。-pthreadまた、1 回のコンパイルで必要な場合は、同じプロジェクト内のすべてのコンパイルで必要になる可能性が高くなります。(そして、完全なコンパイル、プリプロセッサ、およびリンカに影響するすべてのものの前に置きます。)

于 2013-02-23T20:26:36.240 に答える