为什么我的程序试图使用libluajit-5.1.so.2而不是libluajit.so?

时间:2012-10-06 04:11:58

标签: c++ linux shared-libraries

我正在编写一个使用LuaJIT的项目。我正在尝试在计算机上运行我的项目,我暂时没有运行它。它过去运行得很好,但现在当我尝试运行它时会抱怨。

我的源代码树中有LuaJIT,它构建得很好。我正在使用CMake生成我的make文件,据我所知,CMake找到文件libluajit.so,但是当我运行程序时,我收到以下错误:

../build/game/game: error while loading shared libraries: libluajit-5.1.so.2: cannot open shared object file: No such file or directory

我不知道为什么它正在寻找那个版本的库而不是libluajit.so。这是Ubuntu linux的价值所在。如有必要,我可以添加更多详细信息,如果有必要,我可以添加更多详细信息,我不确定哪些信息可以帮助您找出问题。

编辑:

要构建和链接程序,我在文件CMakeLists.txt中有这些行(这是一个缩写,只显示相关位)

find_package(LuaJIT REQUIRED)
set(Extern_LIBS luajit) 
add_executable(proj ${proj_Sources})
target_link_libraries(proj ${Extern_LIBS})

在我的源目录上运行cmake后,我运行make。然后运行它我只运行./proj

1 个答案:

答案 0 :(得分:1)

当你构建它时," .so"实际上是图书馆的符号链接。使用Verisioned文件名和SONAMEs,以便库的多个版本可以共存,从而防止在其他操作系统中常见的问题,因为较旧的软件与较新的库不兼容,而较新的软件与较旧的库不兼容