编译Lua - 创建.so文件? [英] Compiling Lua - create .so files?

查看:351
本文介绍了编译Lua - 创建.so文件?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我在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 ,但补丁的其余部分是好的,并且比较简单易懂。



不要忘记向CFLAGS添加 -fPIC (Arch包 )。


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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆