我正在 Centos 6.5 上编译 Lua 5.2.3,编译/安装工作正常。
但是,我还需要编译另一个程序的开发库。我通常会通过这样做来安装它们:
yum install lua-devel
问题是安装 Lua 5.1 共享库,而不是 5.2.3 共享库。
I could只需使用 Centos 存储库中的 Lua 5.1 运行,但如果(对于了解的人来说)让最新版本工作是一件简单的事情,那么我会很感激有人给我指路。对我来说,Linux makefiles 仍然有点呃,嗯,你知道......
EDIT
我找到了这个网站——http://lua-users.org/lists/lua-l/2006-10/msg00091.html http://lua-users.org/lists/lua-l/2006-10/msg00091.html- 从很久以前就建议对 makefile 进行一些更改,但是当我现在运行它们时我得到了这个:
gcc -fPIC -o liblua.so -shared lapi.o lcode.o lctype.o ldebug.o ldo.o ldump.o
lfunc.o lgc.o llex.o lmem.o lobject.o lopcodes.o lparser.o lstate.o lstring.o ltable.o
ltm.o lundump.o lvm.o lzio.o lauxlib.o lbaselib.o lbitlib.o lcorolib.o ldblib.o
liolib.o lmathlib.o loslib.o lstrlib.o ltablib.o loadlib.o linit.o
/usr/bin/ld: lapi.o: relocation R_X86_64_32 against `luaO_nilobject_' can not be used
when making a shared object; recompile with -fPIC
注意到我添加了 -fPIC 是徒劳的;链接中没有建议,只是在错误中暗示了这一点。
编辑 2 - 解决方案
好吧,虽然这个模组最初是我自己发现的,但卡特韦尔保证它有效,这让我坚持了下来。这就是我所做的......
From 卡特韦尔的链接 https://projects.archlinux.org/svntogit/packages.git/tree/trunk/liblua.so.patch?h=packages/lua我手动编辑了 Makefile。它很容易遵循(正如 catwell 建议的那样,忽略 luaconf.h mods)。
缺少的链接是更改以下行:
src/Makefile
------------
CFLAGS= -O2 -Wall -DLUA_COMPAT_ALL $(SYSCFLAGS) $(MYCFLAGS) -fPIC
您要将 -fPIC 添加到末尾。
现在似乎工作正常。
感谢 Etan,但我接受卡特韦尔的回答,因为它最直接地导致了解决方案。