Linux,C ++,Lua 5.3,CMake,undefined reference

时间:2016-01-10 10:23:03

标签: c++ lua cmake

我试图在我的C ++程序中使用Lua。我的操作系统是Linux Manjaro 15.12。我下载了Lua 5.3源代码,并将其编译为C ++代码(我真的需要异常处理而不是longjmp),用这一行:

make "CC=g++" linux

然后 sudo make install 以在/ usr / local中安装Lua。一切都很好看。我的CMake版本似乎已更新:

cmake --version
cmake version 3.4.1

在我的CMake文件中,我发现Lua是这样的:

find_package(Lua REQUIRED)
include_directories(${LUA_INCLUDE_DIR})

message("   *** Lua include: ${LUA_INCLUDE_DIR}")
message("   *** Lua lib: ${LUA_LIBRARIES}")

运行此命令后:

cd build
cmake -G "Unix Makefiles" ..

在/ usr / local / include中正确检测到include文件夹,但库本身位于/usr/lib64/liblua5.1.so;/usr/lib64/libm.so,这不是安装我做了(及其版本5.1,我想要5.3)。 CMake说:

Found Lua: /usr/lib64/liblua5.1.so;/usr/lib64/libm.so (found version "5.3.2")

就像是#34;混合"这两个版本。运行 make 会引发大量未定义的引用。以前在我的CMake文件中,我找到了其他库(由我编译的SDL2,OpenGL,glew),它们似乎有效。我得到的唯一错误是Lua库。当然,我将库添加到 target_link_libraries 命令

我该如何解决这个问题? (我不在乎是否必须删除旧的Lua版本,只要它不会破坏我的操作系统。)

1 个答案:

答案 0 :(得分:1)

您可以通过手动设置Lua库路径来解决此问题:

CMAKE_ARGS:="-DLUA_LIBRARY=[Your Lua 5.3 so installation path]\;dl"