生成'时出错;luac&x27;RHEL6.6中的可执行文件

生成'时出错;luac&x27;RHEL6.6中的可执行文件,lua,Lua,我正在尝试在Red Hat Enterprise Linux 6.6平台上构建lua-5.3.1。将生成以下二进制文件: 共享库:liblua.so 可执行文件:lua 可执行文件:luac 我在提供的Makefile中做了以下更改: 现有: CC= gcc -std=gnu99 LUA_A= liblua.a $(LUA_A): $(BASE_O) $(AR) $@ $(BASE_O) $(RANLIB) $@ 修改: CC= gcc -fPI

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

  • 共享库:liblua.so
  • 可执行文件:lua
  • 可执行文件: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)
    

    “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
    

    任何帮助都将不胜感激。

    luac
    必须与
    liblua.a
    静态链接

    如果确实希望动态链接
    luac
    ,请尝试以下操作:

    • lopcodes.c
      lopcodes.h
    • lundump.h
    • 重建

    您可以尝试在
    luaconf.h
    中将
    LUAI_FUNC
    设置为普通
    extern
    (但这将从共享库导出许多私有符号),或者按照@lhf的建议,使用静态
    liblua.a
    链接
    luac