2015-11-27 2 views
0

Я пытаюсь построить lua-5.3.1 на платформе Red Hat Enterprise Linux 6.6. После бинарники будет строить:Ошибка при создании исполняемого файла 'luac' в RHEL6.6

  1. разделяемой библиотека: liblua.so
  2. исполняемые: Lua
  3. исполняемый: luac

Я сделал следующие изменения в поставленном Makefile:


Имеющийся:

CC= gcc -std=gnu99 
LUA_A= liblua.a 
$(LUA_A): $(BASE_O) 
      $(AR) [email protected] $(BASE_O) 
      $(RANLIB) [email protected] 

Modified:

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 

Любая помощь будет оценена по достоинству.

+2

Вы можете попробовать установить ' LUAI_FUNC' в обычный 'extern' в' luaconf.h' (но это будет expor t много частных символов из общей библиотеки), или ссылку 'luac' со статическим' liblua.a' как @lhf. – siffiejoe

ответ

0

luac должен быть построен статически связанным с liblua.a.

Если вы действительно хотите luac компонуются динамически, попробуйте следующее:

  • удалить LUAI_DDEF и LUAI_DDEC из lopcodes.c и lopcodes.h
  • удалить LUAI_FUNC из lundump.h
  • перестраивать