加载共享库时出错:liblua.so
Error while loading shared libraries: liblua.so
我正在尝试为一个学校项目启动一个客户端,该项目具有在 Lua 中开发的 AI,我在程序文件夹根目录的 /lib/ 文件夹中添加了 liblua.so .
编译并启动上述程序后,出现以下错误:
./zappy_ai: error while loading shared libraries: liblua.so: cannot open shared object file: No such file or directory
据我所知,我必须在程序编译时做一些事情才能知道共享库的位置。
这是我的 Makefile 的相关部分:
CXX = g++
BASE_FLAGS = -Wall -Wextra -Iincludes
AI_NAME = zappy_ai
AI_PATH = ./sources/client/
AI_FLAGS = $(BASE_FLAGS) \
-L./lib/ \
-I./includes/client/ \
-I./include/ \
-std=c++11 \
AI_LDFLAGS = -llua
AI_SRCS = main.cpp \
Client.cpp \
Params/Params.cpp \
Params/Option.cpp \
SocketTCP.cpp \
Misc/Error.cpp
AI_OBJS = $(addprefix $(AI_PATH), $(AI_SRCS:.cpp=.cpp.o))
%.cpp.o : %.cpp
@printf "%b[Compilation]%b %-50s" $(BLUE) $(RESET) $<
@$(CXX) $(FLAGS) -c $< -o $@
@printf "%bOK%b\n" $(GREEN) $(RESET)
$(AI_NAME) : FLAGS = $(AI_FLAGS)
$(AI_NAME) : $(AI_OBJS)
@$(CXX) $^ -o $@ $(AI_LDFLAGS)
@printf "%b[Message]%b AI compilation done\n\n" $(YELLOW) $(RESET)
我应该添加什么才能启动我的程序并让它找到我的共享库?
tldr:
$ LD_LIBRARY_PATH="$LD_LIBRARY_PATH:./lib" ./zappy_ai
更长的解释:
您已动态链接
zappy_ai
反对
./lib/liblua.so
通过使用
LDFLAGS = -L./lib/
和
LDLIBS = -llua
当动态 linker/loader 尝试解析 -llua
zappy_ai
使用的符号。
我正在尝试为一个学校项目启动一个客户端,该项目具有在 Lua 中开发的 AI,我在程序文件夹根目录的 /lib/ 文件夹中添加了 liblua.so .
编译并启动上述程序后,出现以下错误:
./zappy_ai: error while loading shared libraries: liblua.so: cannot open shared object file: No such file or directory
据我所知,我必须在程序编译时做一些事情才能知道共享库的位置。
这是我的 Makefile 的相关部分:
CXX = g++
BASE_FLAGS = -Wall -Wextra -Iincludes
AI_NAME = zappy_ai
AI_PATH = ./sources/client/
AI_FLAGS = $(BASE_FLAGS) \
-L./lib/ \
-I./includes/client/ \
-I./include/ \
-std=c++11 \
AI_LDFLAGS = -llua
AI_SRCS = main.cpp \
Client.cpp \
Params/Params.cpp \
Params/Option.cpp \
SocketTCP.cpp \
Misc/Error.cpp
AI_OBJS = $(addprefix $(AI_PATH), $(AI_SRCS:.cpp=.cpp.o))
%.cpp.o : %.cpp
@printf "%b[Compilation]%b %-50s" $(BLUE) $(RESET) $<
@$(CXX) $(FLAGS) -c $< -o $@
@printf "%bOK%b\n" $(GREEN) $(RESET)
$(AI_NAME) : FLAGS = $(AI_FLAGS)
$(AI_NAME) : $(AI_OBJS)
@$(CXX) $^ -o $@ $(AI_LDFLAGS)
@printf "%b[Message]%b AI compilation done\n\n" $(YELLOW) $(RESET)
我应该添加什么才能启动我的程序并让它找到我的共享库?
tldr:
$ LD_LIBRARY_PATH="$LD_LIBRARY_PATH:./lib" ./zappy_ai
更长的解释:
您已动态链接
zappy_ai
反对
./lib/liblua.so
通过使用
LDFLAGS = -L./lib/
和
LDLIBS = -llua
当动态 linker/loader 尝试解析 -llua
zappy_ai
使用的符号。