C Lua - 编译错误

时间:2016-12-26 14:25:34

标签: c ubuntu lua cmake

这是我的C代码:

#include "lua.h"
#include "lualib.h"
#include "lauxlib.h"
int main(void)
{
    lua_State *L = luaL_newstate();
    luaL_openlibs(L);
    luaL_dofile(L, "/home/test/test.lua");
    lua_close(L);
    return 0;
}

使用以下命令编译代码:

sudo gcc /home/test/src/main.c -llua -ldl -lm -o /home/test/test.o

好的,正在发挥作用。 但是,如果我使用CMakeLists.text,编译失败!

CMakeLists.txt:

cmake_minimum_required(VERSION 2.8)
project(testc C)

set(CMAKE_SHARED_LINKER_FLAGS  "${CMAKE_C_FLAGS} -llua -ldl -lm")

file(GLOB headers RELATIVE ${CMAKE_CURRENT_SOURCE_DIR} src/*.h)

add_executable(testc src/main.c)
target_link_libraries(testc ${LUA_LIBRARIES})
install(TARGETS testc DESTINATION ${CMAKE_CURRENT_SOURCE_DIR})

错误:

[ 50%] Building C object CMakeFiles/testc.dir/src/main.c.o
[100%] Linking C executable testc
CMakeFiles/testc.dir/src/main.c.o: In function `main':
main.c:(.text+0x9): undefined reference to `luaL_newstate'
main.c:(.text+0x19): undefined reference to `luaL_openlibs'
main.c:(.text+0x2f): undefined reference to `luaL_loadfilex'
main.c:(.text+0x5a): undefined reference to `lua_pcallk'
main.c:(.text+0x6b): undefined reference to `lua_close'

为什么?

谢谢。

0 个答案:

没有答案