lua交叉编译移植到ARM-Linux

很多arm-linux需要用到lua,但是lua默认只包含linux下的编译,这里需要根据交叉编译器修改编译文件Makefile,交叉编译lua。我从网上找了一些方法,但是发现都无法完全解决,或者不算完整,因此在这里做一下记录:

1、首先需要下载lua安装包,免费下载地址(我看了下在其他CSDN资源上要收7分的):http://www.tecgraf.puc-rio.br/lua/ftp/lua-5.2.0.tar.gz

2、解压lua-5.2.0.tar.gz,在文档中会有一下文件

root@ubuntu:/home/yao/share/lua-5.2.0# ls
Makefile  Makefile~  README  doc  src

我们可以看到这里有个Makefile文件,然后在src文件路径下,其实还有一个Makefile文件,这里要区分清楚,这两个Makefile对我们后面的交叉编译都有影响。

3、修改Makefile文件

    3.1 我们首先打开在/lua-5.2.0路径下的Makefile文件,在文件的前面部分会有相关配置如下:

INSTALL_TOP= /usr/local
INSTALL_BIN= $(INSTALL_TOP)/bin
INSTALL_INC= $(INSTALL_TOP)/include
INSTALL_LIB= $(INSTALL_TOP)/lib
INSTALL_MAN= $(INSTALL_TOP)/man/man1
INSTALL_LMOD= $(INSTALL_TOP)/share/lua/$V
INSTALL_CMOD= $(INSTALL_TOP)/lib/lua/$V

以上信息表示我们lua编译安装后,将生成的头文件,库文件等分别放到 /usr/local/bin等 路径下相关路径里面。我们可以根据我们实际需求修改路径,以满足我们自己的需求,如下就是我修改后的路径设置,我将安装路径修改到根目录中 fsu文件夹里面。

# Makefile for installing Lua
# See doc/readme.html for installation and customization instructions.

# == CHANGE THE SETTINGS BELOW TO SUIT YOUR ENVIRONMENT =======================

# Your platform. See PLATS for possible values.
PLAT= none

# Where to install. The installation starts in the src and doc directories,
# so take care if INSTALL_TOP is not an absolute path. See the local target.
# You may want to make INSTALL_LMOD and INSTALL_CMOD consistent with
# LUA_ROOT, LUA_LDIR, and LUA_CDIR in luaconf.h.

#INSTALL_TOP= /usr/local                #
#INSTALL_BIN= $(INSTALL_TOP)/bin        #可执行文件放置此
#INSTALL_INC= $(INSTALL_TOP)/include    #头文件
#INSTALL_LIB= $(INSTALL_TOP)/lib        #库文件
#INSTALL_MAN= $(INSTALL_TOP)/man/man1
#INSTALL_LMOD= $(INSTALL_TOP)/share/lua/$V
#INSTALL_CMOD= $(INSTALL_TOP)/lib/lua/$V

INSTALL_TOP= /fsu
INSTALL_BIN= $(INSTALL_TOP)/bin
INSTALL_INC= $(INSTALL_TOP)/include
INSTALL_LIB= $(INSTALL_TOP)/lib
INSTALL_MAN= $(INSTALL_TOP)/man/man1
INSTALL_LMOD= $(INSTALL_TOP)/lua/$V
INSTALL_CMOD= $(INSTALL_TOP)/lua/$V


# How to install. If your install program does not support "-p", then
# you may have to run ranlib on the installed liblua.a.

      3.2 第二个Makefile文件也需要做部分修改

默认情况下,这个Makefile文件开头是这样的

这里,我们只需要将这里gcc需要替换为我们对应交叉编译工具 ,比如arm-linux-gnueabi-gcc

# Makefile for building Lua
# See ../doc/readme.html for installation and customization instructions.

# == CHANGE THE SETTINGS BELOW TO SUIT YOUR ENVIRONMENT =======================

# Your platform. See PLATS for possible values.
PLAT= none

CC= arm-linux-gnueabi-gcc
CFLAGS= -O2 -Wall -DLUA_COMPAT_ALL $(SYSCFLAGS) $(MYCFLAGS)
LDFLAGS= $(SYSLDFLAGS) $(MYLDFLAGS)
LIBS= -lm $(SYSLIBS) $(MYLIBS)

AR= ar rcu
RANLIB= ranlib
RM= rm -f

SYSCFLAGS=
SYSLDFLAGS=
SYSLIBS=

MYCFLAGS=
MYLDFLAGS=
MYLIBS=
MYOBJS=

文件再往下拉linux:目标,把后面的-lreadline -lncurses两个库连接去掉

generic: $(ALL)

linux:
	$(MAKE) $(ALL) SYSCFLAGS="-DLUA_USE_LINUX" SYSLIBS="-Wl,-E -ldl -lreadline -lncurses"

macosx:
	$(MAKE) $(ALL) SYSCFLAGS="-DLUA_USE_MACOSX" SYSLIBS="-lreadline"

修改为:

linux:
	$(MAKE) $(ALL) SYSCFLAGS="-DLUA_USE_LINUX" SYSLIBS="-Wl,-E -ldl"

4、编译安装lua

上面的两个Makefile文件修改过后,我们可以对lua进行编译安装了。

首先执行make linux,系统会进行正常编译。

然后执行make install进行安装。

如此我们移植arm-linux环境的lua已经安装完成。

发布了4 篇原创文章 · 获赞 0 · 访问量 55

猜你喜欢

转载自blog.csdn.net/y345996249/article/details/105722875