【问题标题】:Error while loading shared libraries: liblua.so加载共享库时出错:liblua.so
【发布时间】:2016-10-26 01:12:40
【问题描述】:

我正在尝试为一个在 Lua 中开发 AI 的学校项目启动客户端,我已将 liblua.so 添加到我的程序文件夹根目录的 /lib/ 文件夹中。

编译并启动该程序后,我收到以下错误:

./zappy_ai:加载共享库时出错:liblua.so:无法打开共享对象文件:没有这样的文件或目录

据我了解,我必须在编译时为我的程序做一些事情才能知道我的共享库的位置。

这是我的 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)

为了能够启动我的程序并让它找到我的共享库,我应该添加什么?

【问题讨论】:

  • 如果你从源代码编译了lua,你可能需要运行ldconfig或将/usr/local/lib添加到/etc/ld.so.conf

标签: makefile lua shared-libraries


【解决方案1】:

tldr:

$ LD_LIBRARY_PATH="$LD_LIBRARY_PATH:./lib" ./zappy_ai

更长的解释:

你已经动态链接了

zappy_ai

反对

./lib/liblua.so

通过使用

LDFLAGS = -L./lib/

LDLIBS = -llua

当动态链接器/加载器尝试解析zappy_ai 使用的-llua 符号时,生成的zappy_ai 可执行文件要求LD_LIBRARY_PATH 环境变量中存在相同的./lib/

【讨论】:

    猜你喜欢
    • 2011-05-29
    • 2017-11-05
    • 2014-12-09
    • 2022-01-04
    • 2013-01-24
    相关资源
    最近更新 更多