编译Lua - 创建.so文件? [英] Compiling Lua - create .so files?
问题描述
我在Centos 6.5上编译Lua 5.2.3,编译/安装正常。
但是,我还需要另一个程序的开发库。我通常这样安装:
yum install lua-devel
问题是安装Lua 5.1共享库,而不是5.2.3。
可以从Centos repo运行Lua 5.1,但如果它是一个简单的事情(知道的人),使最新版本的工作,那么我会感谢有人告诉我的方式。对我来说,Linux的makefile还是有点呃,好吧,你知道...
编辑
我找到了这个网站 - 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针对`luaO_nilobject_'可以在创建共享对象时不使用
;重新编译-fPIC
注意到我添加了-fPIC在一个徒劳的手势;
编辑2 - 解决方案
Ok ,而我最初发现这个mod,这是catwell的保证,它的工作,导致我坚持。这是我做的...
从 catwell的链接我手动编辑Makefile。
缺少的链接是更改以下行:
src / Makefile
------------
CFLAGS = -O2 -Wall -DLUA_COMPAT_ALL $ (SYSCFLAGS)$(MYCFLAGS)-fPIC
您正在将-fPIC添加到末尾。 p>
现在看起来很好用。
感谢Etan,但我接受catwell的回答,到解决方案。
看看 Arch Linux就是这样。您不应该触摸 LUA_ROOT
,但补丁的其余部分是好的,并且比较简单易懂。
I am compiling Lua 5.2.3 on Centos 6.5, and the compilation / install works fine.
However, I also need the development libraries for another program to compile. I would usually install these by doing this :
yum install lua-devel
Problem is that installs the Lua 5.1 shared libraries, not the 5.2.3 ones.
I could just run with Lua 5.1 from the Centos repo, but if it's a simple-ish thing (for someone who knows) to make the latest version work then I'd be grateful for someone showing me the way. For me the Linux makefiles are still a little bit er, well, you know...
EDIT
I found this site - http://lua-users.org/lists/lua-l/2006-10/msg00091.html - from a long time ago which suggested some changes to the makefiles, but I get this when i run them now :
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
noting that I added the -fPIC in a futile gesture; that wasn't suggested in the link just hinted at in the error.
EDIT 2 - SOLUTION
Ok, whilst I'd found this mod myself originally, it was catwell's assurance that it worked that led me to persevere. Here's what I did...
From catwell's link I manually edited the Makefiles. It's easy enough to follow (and as catwell suggests, ignore the luaconf.h mods).
The missing link is to change the following line :
src/Makefile
------------
CFLAGS= -O2 -Wall -DLUA_COMPAT_ALL $(SYSCFLAGS) $(MYCFLAGS) -fPIC
You are adding the -fPIC to the end.
Seems to work fine now.
Thanks to Etan, but I'm accepting catwell's answer as it led most directly to the solution.
Look how Arch Linux does it. You should not touch LUA_ROOT
but the rest of the patch is good and relatively simple to understand.
Don't forget to add -fPIC
to the CFLAGS too (the Arch package does it here).
这篇关于编译Lua - 创建.so文件?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!