树莓派Raspbian系统下编译C++ MySQL客户端程序链接错误求助
解决Raspbian树莓派上MySQL C++客户端编译的链接错误
首先看你的错误提示,/usr/bin/ld : cannot find : No such file or directory,这个空的“找不到”项是关键——问题出在你编译命令里的-Wl, -Bdynamic参数上。
错误原因
-Wl,是用来给链接器(ld)传递参数的语法,正确的写法是逗号后面不能加空格。你写成-Wl, -Bdynamic,链接器会把逗号后面的空格当成一个空的参数,误以为要找一个空名称的文件,自然就报错了。
修正后的编译命令
把-Wl, -Bdynamic改成-Wl,-Bdynamic(去掉逗号后的空格),完整命令应该是:
g++ -o essaiP -I/home/pi/mysql -I/home/pi/mysql/include -Wl,-Bdynamic essaiP.cpp -lmysqlcppconn
额外排查点(如果还是报错)
如果修正后还是提示找不到libmysqlcppconn.so,可以试试下面的步骤:
- 确认
libmysqlcppconn库已经安装:可以用sudo apt-get install libmysqlcppconn-dev来安装官方包(树莓派的Raspbian仓库里应该有这个包,比手动编译更省心) - 如果是手动编译的库,需要告诉链接器库的路径,加上
-L/home/pi/mysql/lib(假设库文件在这个目录下),命令变成:g++ -o essaiP -I/home/pi/mysql/include -L/home/pi/mysql/lib -Wl,-Bdynamic essaiP.cpp -lmysqlcppconn - 运行程序前如果提示找不到库,可以把库路径加到环境变量:
export LD_LIBRARY_PATH=/home/pi/mysql/lib:$LD_LIBRARY_PATH,或者把库文件复制到/usr/lib/目录下。
内容的提问来源于stack exchange,提问作者Hiiro
相关产品推荐
相关产品推荐

