use*_*880 5 c++ mysql compiler-construction
我有以下代码
#include <my_global.h>
#include <mysql.h>
int main(int argc, char **argv)
{
printf("MySQL client version: %s\n", mysql_get_client_info());
exit(0);
}
Run Code Online (Sandbox Code Playgroud)
当我尝试使用它编译它
gcc mysqldb.c -o mysql -I/usr/include/mysql -lmysqlclient
Run Code Online (Sandbox Code Playgroud)
我得到一个错误说致命错误mysql.h:没有这样的文件或目录.我怎样才能成功编译和运行代码
小智 9
我不知道你的操作系统是否有一些变化.我的是Arch Linux,我安装了mariaDB.在包中,有一个名为"mysql_config"的程序,它可以提供编译程序的正确方法.通过runnig
$ mysql_config --help
Usage: /usr/bin/mysql_config [OPTIONS]
Options:
--cflags [-I/usr/include/mysql]
--include [-I/usr/include/mysql]
--libs [-L/usr/lib -lmysqlclient -lpthread -lz -lm -lssl -lcrypto -ldl]
--libs_r [-L/usr/lib -lmysqlclient_r -lpthread -lz -lm -lssl -lcrypto -ldl]
--plugindir [/usr/lib/mysql/plugin]
--socket [/run/mysqld/mysqld.sock]
--port [0]
--version [10.0.17]
--libmysqld-libs [-L/usr/lib -lmysqld]
--variable=VAR VAR is one of:
pkgincludedir [/usr/include/mysql]
pkglibdir [/usr/lib]
plugindir [/usr/lib/mysql/plugin]
Run Code Online (Sandbox Code Playgroud)
你可以看到程序的控制标志.通过您的程序,我使用了以下内容:
$gcc main.c -o main $(mysql_config --libs --cflags)
Run Code Online (Sandbox Code Playgroud)
然后,通过runnig新程序'main'
$./main
MySQL client version: 10.0.17-MariaDB
Run Code Online (Sandbox Code Playgroud)
哪个明显成功了!
所以,我确信还有其他一些方法可以做到这一点,但现在这对我来说没问题.
运行命令
$mysql_config --libs --cflags
Run Code Online (Sandbox Code Playgroud)
查看mysql_config生成的exacly标志.请享用!
小智 5
今天我遇到了同样的错误,结果我忘记安装package了libmysqlclient-dev。我安装后
sudo apt install libmysqlclient-dev
Run Code Online (Sandbox Code Playgroud)
错误消失了。