在RHEL6.6中构建'luac'可执行文件时出现错误。

我正在尝试在Red Hat Enterprise Linux 6.6平台上构建lua-5.3.1。将构建以下二进制文件:

1.共享库:liblua.so 2.可执行文件:lua 3.可执行文件:luac

我已经在提供的Makefile中进行了以下更改:


现有:

CC = gcc -std = gnu99
LUA_A = liblua.a
$(LUA_A):$(BASE_O)
    $(AR)$@ $(BASE_O)
    $(RANLIB)$@

已修改:

CC = gcc -fPIC
LUA_A = liblua.so
$(LUA_A):$(BASE_O)
    $(CC)-mthreads-shared-o $(LUA_A)$(BASE_O)

使用修改后的Makefile已成功构建'liblua.so'和'lua'。但是在'luac'构建过程中出现了以下链接错误:

gcc -fPIC -O2 -Wall -Wextra -DLUA_COMPAT_5_2 -DLUA_USE_LINUX    -c -o luac.o luac.c
gcc -fPIC -o luac   luac.o liblua.so -lm -Wl,-E -ldl -lreadline
luac.o:在函数‘PrintFunction’中:
luac.c:(.text+0x947):对‘luaP_opnames’未定义的引用
luac.c:(.text+0x963):对‘luaP_opmodes’未定义的引用
luac.o:在函数‘pmain’中:
luac.c:(.text+0x11db):对‘luaU_dump’未定义的引用
/usr/bin/ld:luac:未定义的符号‘luaU_dump’
/usr/bin/ld:最终链接失败:输出上的不可表示的部分
collect2:ld返回1退出状态
make [1]:*** [luac]错误1
make [1]:离开目录‘/disk1/u10rhel66/lua-5.3.1/src’
make:*** [linux]错误2

任何帮助将不胜感激。

点赞
用户107090
用户107090

luac必须静态链接liblua.a

如果您真的想要将luac动态链接,请尝试以下操作:

  • lopcodes.clopcodes.h中删除LUAI_DDEFLUAI_DDEC
  • lundump.h中删除LUAI_FUNC
  • 重新构建
2015-11-27 09:41:28