centos系统c++测试mysql,正确安装好mysql客户端后,在编译的时候直接-lmysqlclient的时候一直找不到mysql.h
[root@pattern test]# g++ test_mysql.cpp -o main -lmysqlclient
test_mysql.cpp:2:19: fatal error: mysql.h: No such file or directory
#include
^
compilation terminated.
但是调用mysql的配置config去连接库就可以成功:
g++ test_mysql.cpp `mysql_config --cflags --libs` -o main
找一下是否有这个库mysqlclient 命令 find / -name libmysqlclient.so
[root]# find / -name libmysqlclient.so
/usr/lib64/mysql/libmysqlclient.so
/usr/local/mysql/lib/libmysqlclient.so
或者文件mysql.h 命令find / -name mysql.h
[root]# find / -name mysql.h
/usr/local/mysql/include/mysql.h
/usr/local/mysql/include/mysql/mysql.h
没有的话,那就重装一下mysql的客户端 yum install mysql-devel
但是不用这个的话直接-l -I -L库都不行,连到库了但是好像mysql又出问题了
[root@pattern test]# g++ test_mysql.cpp -o main -I/usr/include/mysql
/tmp/ccLv8bO9.o: In function `main':
test_mysql.cpp:(.text+0x23): undefined reference to `mysql_init'
test_mysql.cpp:(.text+0x5e): undefined reference to `mysql_real_connect'
test_mysql.cpp:(.text+0x86): undefined reference to `mysql_query'
test_mysql.cpp:(.text+0xb4): undefined reference to `mysql_close'
collect2: error: ld returned 1 exit status
这里的话,推测就是mysql也需要依赖一些别的库,所以在你只-lmysqlclient的时候或者-I/usr/include/mysql都会报错,
但是你用`mysql_config --cflags --libs`就能成功,所以基本上就可以断定是这个问题了
于是乎:
[root@pattern test]# mysql_config --cflags --libs
-I/usr/include/mysql -g -m64 -fPIC -g -fabi-version=2 -fno-omit-frame-pointer -fno-strict-aliasing
-L/usr/lib64/mysql -lmysqlclient -lpthread -lm -ldl
可以看到除了-lmysqlclient 外还有别的库,把这些全部加进去
g++ test_mysql.cpp -I/usr/include/mysql -L/usr/lib64/mysql -lmysqlclient -lpthread -lm -ldl -o main
就能成功了。到此再测试下拿些不需要
最后
g++ test_mysql.cpp -L/usr/lib64/mysql -lmysqlclient -I/usr/include/mysql -o main
只需要这三个就ok了,但是为啥这三个都需要我也不知道了,求大佬指教,谢谢