use*_*987 2 c mysql api makefile
这可能听起来像一个愚蠢的问题.但是这里.....我正在使用一个名为db_access.c的C程序,它与MySQL交互(在Ubuntu 10.10中与MySQL Server版本:5.1.49-1ubuntu8.1(Ubuntu)).在程序中,我有:include "mysql.h"
当我执行以下操作时,一切正常:
gcc -I/usr/include/mysql db_access.c -lmysqlclient -o db_access
./db_access
Run Code Online (Sandbox Code Playgroud)
当我尝试将其集成到现有(和工作的makefile)时出现问题.makefile的内容:
all: MappingServer
#Macro definitions
CC = gcc
CFLAGS = -lm
INCLUDES = -I/usr/include/mysql
LIBS = -L/usr/lib/mysql -lmysqlclient
MappingServer.o: MappingServer.c map_registration.h
$(CC) $(CFLAGS) -c MappingServer.c
route_aggregation.o: route_aggregation.c map_registration.h
$(CC) $(CFLAGS) -c route_aggregation.c
db_access.o: db_access.c map_registration.h mysql.h
$(CC) $(CFLAGS) $(INCLUDES) -c db_access.c
MappingServer: MappingServer.o route_aggregation.o db_access.o
$(CC) $(LIBS) -o MappingServer MappingServer.o route_aggregation.o db_access.o
clean:
-rm MappingServer.o route_aggregation.o db_access.o
Run Code Online (Sandbox Code Playgroud)
我还有另外两个C程序,MappingServer.c和route_aggregation.c.这三个文件需要一起编译.顺便说一句,我也做了:
root@ahuq-kitchen:/home/ahuq/MappingServer# mysql_config --cflags
-I/usr/include/mysql -DBIG_JOINS=1 -fno-strict-aliasing -DUNIV_LINUX -DUNIV_LINUX
Run Code Online (Sandbox Code Playgroud)
和
root@ahuq-kitchen:/home/ahuq/MappingServer# mysql_config --libs
-Wl,-Bsymbolic-functions -rdynamic -L/usr/lib/mysql -lmysqlclient
Run Code Online (Sandbox Code Playgroud)
所以我认为路径还可以.当我这样做:make all
我得到:
root@ahuq-kitchen:/home/ahuq/MappingServer# make all
gcc -lm -c MappingServer.c
gcc -lm -c route_aggregation.c
route_aggregation.c: In function ‘vtysh_input’:
route_aggregation.c:602: warning: function returns address of local variable
make: *** No rule to make target `mysql.h', needed by `db_access.o'. Stop.
Run Code Online (Sandbox Code Playgroud)
为什么会这样?
这条线
db_access.o: db_access.c map_registration.h mysql.h
Run Code Online (Sandbox Code Playgroud)
告诉make db_access.o取决于db_access.c,map_registration.h和mysql.h.抱怨,因为mysql.h在当前目录中找不到(它在/usr/include/mysql).
请参阅Makefile更新库依赖关系的问题,了解如何在make中将库指定为依赖项