还是刚才那个makefile问题

HelloDan 2011-05-09 04:44:42
我编译是没有问题的了,不过在运行时出错:

./main: error while loading shared libraries: libmysql.so.16: cannot open shared object file: no such file or directory



我的makefile是这样写的:

OBJ = main.o PeerDbOpMgr.o
MYSQL_INC = ./mysql/include
LNK_MYSQL =./mysql/lib/ -lmysql

main : $(OBJ)
g++ -g -o main $(OBJ) -L$(LNK_MYSQL) -lpthread -lm

main.o : main.cpp
g++ -g -c -I$(MYSQL_INC) main.cpp mgr.cpp misc_helper.cpp


PeerDbOpMgr.o : PeerDbOp.cpp PeerDbOp.h
g++ -g -c -I$(MYSQL_INC) PeerDbOp.cpp -o PeerDbOpMgr.o


clean :
rm main $(OBJ)



libmysql.so.16 的路径为: ./mysql/lib/libmysql.so.16


我要怎样改才能使程序运行啊? 谢谢

...全文
100 14 打赏 收藏 转发到动态 举报
写回复
用AI写文章
14 条回复
切换为时间正序
请发表友善的回复…
发表回复
HelloDan 2011-05-09
  • 打赏
  • 举报
回复
[Quote=引用 13 楼 justkk 的回复:]

LNK_MYSQL =/home/dan/Documents/mini/mysql/lib/libmysql.so.16

main : $(OBJ)
g++ -g -o main $(OBJ) $(LNK_MYSQL) -lpthread -lm
[/Quote]

谢谢! 这样我就明白了,你这个是直接指定了, 而上面那个是include的,所以去掉 -L。
justkk 2011-05-09
  • 打赏
  • 举报
回复
LNK_MYSQL =/home/dan/Documents/mini/mysql/lib/libmysql.so.16

main : $(OBJ)
g++ -g -o main $(OBJ) $(LNK_MYSQL) -lpthread -lm
HelloDan 2011-05-09
  • 打赏
  • 举报
回复
[Quote=引用 10 楼 justkk 的回复:]

另外,去掉下面的-L这两个字母
main : $(OBJ)
g++ -g -o main $(OBJ) -L$(LNK_MYSQL) -lpthread -lm
[/Quote]

不明白哪两个L?
再说明白一些,谢谢!
HelloDan 2011-05-09
  • 打赏
  • 举报
回复
Thanks!
justkk 2011-05-09
  • 打赏
  • 举报
回复
另外,去掉下面的-L这两个字母
main : $(OBJ)
g++ -g -o main $(OBJ) -L$(LNK_MYSQL) -lpthread -lm
justkk 2011-05-09
  • 打赏
  • 举报
回复
要不你这样改一下makefile
LNK_MYSQL=/home/dan/Documents/mini/mysql/lib/libmysql.so.16

其实通过环境变量的方式比较方便,库文件的路径后续可以调整,只需要调整环境变量就行了
HelloDan 2011-05-09
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 justkk 的回复:]

export LD_LIBRARY_PATH=/home/dan/Documents/mini/mysql/lib/

再执行你的程序看看
[/Quote]

你这样的确可以,但是可不可以直接在makefile里面设置好呢?
justkk 2011-05-09
  • 打赏
  • 举报
回复
export LD_LIBRARY_PATH=/home/dan/Documents/mini/mysql/lib/

再执行你的程序看看
HelloDan 2011-05-09
  • 打赏
  • 举报
回复
我都指定了绝路径都不可以吗?
HelloDan 2011-05-09
  • 打赏
  • 举报
回复
我在shell里面输入,返回的是空,什么都没有。。。
justkk 2011-05-09
  • 打赏
  • 举报
回复
还是看你的环境变量啊
echo $LD_LIBRARY_PATH
看是多少。。
HelloDan 2011-05-09
  • 打赏
  • 举报
回复
我将这句:

LNK_MYSQL =./mysql/lib/ -lmysql

改成了绝对路径:

LNK_MYSQL =/home/dan/Documents/mini/mysql/lib/ -lmysql

这样也不行。

绝对路径是:/home/dan/Documents/mini/mysql/lib/libmysql.so.16

请问我该怎样改? 谢谢
hawk198 2011-05-09
  • 打赏
  • 举报
回复
提示是说libmysql没有安装,你可以做个链接到/lib/或者/usr/lib/下面
ln -s $HOME/mysql/lib/libmysql.so.16 /usr/lib/试试看
或者直接安装一次看看
justkk 2011-05-09
  • 打赏
  • 举报
回复
看看环境变量LD_LIBRARY_PATH
是否正确的包含了你的libmysql.so 库文件的绝对路径

23,121

社区成员

发帖
与我相关
我的任务
社区描述
Linux/Unix社区 应用程序开发区
社区管理员
  • 应用程序开发区社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧