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

时间:2015-11-27 07:17:13

标签: lua

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

  1. 共享库:liblua.so
  2. 可执行文件:lua
  3. 可执行文件:luac
  4. 我在提供的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)
    

    'liblua.so'和'lua'已使用修改后的Makefile成功构建。但在'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: In function `PrintFunction':
     luac.c:(.text+0x947): undefined reference to `luaP_opnames'
     luac.c:(.text+0x963): undefined reference to `luaP_opmodes'
     luac.o: In function `pmain':
     luac.c:(.text+0x11db): undefined reference to `luaU_dump'
     /usr/bin/ld: luac: hidden symbol `luaU_dump' isn't defined
     /usr/bin/ld: final link failed: Nonrepresentable section on output
     collect2: ld returned 1 exit status
     make[1]: *** [luac] Error 1
     make[1]: Leaving directory `/disk1/u10rhel66/lua-5.3.1/src' 
     make: *** [linux] Error 2
    

    任何帮助将不胜感激。

1 个答案:

答案 0 :(得分:0)

luac必须与liblua.a静态关联。

如果您真的希望luac动态关联,请尝试以下操作:

  • LUAI_DDEFLUAI_DDEC
  • 删除lopcodes.clopcodes.h
  • LUAI_FUNC
  • 中移除lundump.h
  • 重建