Я пытаюсь построить lua-5.3.1 на платформе Red Hat Enterprise Linux 6.6. После бинарники будет строить:Ошибка при создании исполняемого файла 'luac' в RHEL6.6
- разделяемой библиотека: liblua.so
- исполняемые: Lua
- исполняемый: 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
Любая помощь будет оценена по достоинству.
Вы можете попробовать установить ' LUAI_FUNC' в обычный 'extern' в' luaconf.h' (но это будет expor t много частных символов из общей библиотеки), или ссылку 'luac' со статическим' liblua.a' как @lhf. – siffiejoe