Dan*_*Dan 3 linux makefile shared-libraries
我是Linux的新手.我编写了一个使用MySQL的应用程序,其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
PeerDbOpMgr.o : PeerDbOp.cpp PeerDbOp.h
g++ -g -c -I$(MYSQL_INC) PeerDbOp.cpp -o PeerDbOpMgr.o
clean :
rm main $(OBJ)
Run Code Online (Sandbox Code Playgroud)
我成功编译了它.但当我运行它时,它显示一个错误:
./main:加载共享库时出错:libmysql.so.16:无法打开共享对象文件:没有这样的文件或目录
该libmysql.so.16文件在./mysql/lib/libmysql.so.16,但为什么它说没有这样的文件或目录?
您已将应用程序链接到不在运行时链接程序路径中的库.您的应用程序在运行时应该可以正常工作:
env LD_LIBRARY_PATH=./mysql/lib ./main
要阅读的联机帮助页:ld(1),ldconfig(8)