我是用C API连接的mysql数据库。但是,编好程序后我不会编译。
方法一:gcc test.c -o test -I/user/include/mysql -L/user/lib/mysql -lmysqlclient
我试了一下, 提示找不到mysql.h。
分析:
/user/include/mysql:全是.h文件,应该对应编译阶段
/user/lib/mysql:是静态库和动态库,应该与上面的.h文件对应,用于连接阶段
libmysqlclient.a:估计也是用于连接的,不知道为什么独立于/user/lib/mysql再来一个静态库?
方法二:gcc test.c -o test $(mysql_config --cflags) $(mysql_config --libs)
成功!!!
分析1:
在终端中输入:mysql_config,可看到对应关系:
--cflags [-I/usr/include/mysql -DBIG_JOINS=1 -fPIC]
--libs [-Wl,-Bsymbolic-functions -L/usr/lib/mysql -lmysqlclient]
分析2:
尝试先生成目标文件再连接。
有三个程序:test1.c test2.c test3.c ,其中test1.c用于连接mysql。
单独编译:
gcc -c test1.c -o a.o -I/user/include/mysql 提示错误!
gcc -c test1.c -o a.o $(mysql_config --cflags) 通过!
gcc -c test2.c -o b.o
gcc -c test3.c -o c.o
连接:
gcc a.o b.o c.o -o test -L/user/lib/mysql -lmysqlclient 通过!
gcc a.o b.o c.o -o test -lmysqlclient 通过!这可能是因为我的程序中没用到-L/user/lib/mysql中的内容。
gcc a.o b.o c.o -o test $(mysql_config --libs) 通过!
最终分析:方法一中, -I/user/include/mysql 是不好用的,后面的-L/user/lib/mysql -lmysqlclient好用。方法二是好用的。但两中方法有对应关系,是不是我哪里没设置,或少输了条语句什么的?还有libmysqlclient.a是怎么回事?为什么是单独的?
方法一:gcc test.c -o test -I/user/include/mysql -L/user/lib/mysql -lmysqlclient
我试了一下, 提示找不到mysql.h。
分析:
/user/include/mysql:全是.h文件,应该对应编译阶段
/user/lib/mysql:是静态库和动态库,应该与上面的.h文件对应,用于连接阶段
libmysqlclient.a:估计也是用于连接的,不知道为什么独立于/user/lib/mysql再来一个静态库?
方法二:gcc test.c -o test $(mysql_config --cflags) $(mysql_config --libs)
成功!!!
分析1:
在终端中输入:mysql_config,可看到对应关系:
--cflags [-I/usr/include/mysql -DBIG_JOINS=1 -fPIC]
--libs [-Wl,-Bsymbolic-functions -L/usr/lib/mysql -lmysqlclient]
分析2:
尝试先生成目标文件再连接。
有三个程序:test1.c test2.c test3.c ,其中test1.c用于连接mysql。
单独编译:
gcc -c test1.c -o a.o -I/user/include/mysql 提示错误!
gcc -c test1.c -o a.o $(mysql_config --cflags) 通过!
gcc -c test2.c -o b.o
gcc -c test3.c -o c.o
连接:
gcc a.o b.o c.o -o test -L/user/lib/mysql -lmysqlclient 通过!
gcc a.o b.o c.o -o test -lmysqlclient 通过!这可能是因为我的程序中没用到-L/user/lib/mysql中的内容。
gcc a.o b.o c.o -o test $(mysql_config --libs) 通过!
最终分析:方法一中, -I/user/include/mysql 是不好用的,后面的-L/user/lib/mysql -lmysqlclient好用。方法二是好用的。但两中方法有对应关系,是不是我哪里没设置,或少输了条语句什么的?还有libmysqlclient.a是怎么回事?为什么是单独的?