版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/adlindary/article/details/80484986
在开发嵌入式项目时,由于嵌入式平台没有lua环境,只能自己移植。先到官网上下载最新的lua源码(点击打开链接)。
接下来按照下面步骤:
1、修改src/Makefile文件内容:
源码包中的原始的Makefile的部分需要更改的内容如下:
Your platform. See PLATS for possible values.
PLAT= none
CC= gcc -std=gnu99
CFLAGS= -O2 -Wall -Wextra -DLUA_COMPAT_5_2 (MYCFLAGS)
LDFLAGS= (MYLDFLAGS)
LIBS= -lm (MYLIBS)
AR= ar rcu
RANLIB= ranlib
RM= rm -f
SYSCFLAGS=
SYSLDFLAGS=
更改后的内容如下:
Your platform. See PLATS for possible values.
PLAT= linux
CC=arm-oe-linux-gnueabi-gcc -std=gnu99 -march=armv7-a -mfloat-abi=softfp -mfpu=neon --sysroot=(SYSCFLAGS)
(SYSLDFLAGS)
(SYSLIBS) $(MYLIBS)
AR= arm-oe-linux-gnueabi-ar rcu
RANLIB= arm-oe-linux-gnueabi-ranlib
RM= rm -f
SYSCFLAGS= -fexpensive-optimizations -frename-registers -fomit-frame-pointer -ftree-vectorize -Wno-error=maybe-uninitialized -finline-functions -finline-limit=64 -include quectel-features-config.h -fstack-protector-strong -pie -fpie -Wa,--noexecstack
SYSLDFLAGS= -Wl,-O1 -Wl,--hash-style=gnu -Wl,--as-needed -Wl,-z,relro,-z,now,-z,noexecstack
修改下面的内容;
linux:
(ALL) SYSCFLAGS="-DLUA_USE_LINUX" SYSLIBS="-Wl,-E -ldl -lreadline"
为:
linux:
(ALL) SYSCFLAGS="-DLUA_USE_LINUX" SYSLIBS="-Wl,-E -ldl"
同时将luaconf.h文件的64行屏蔽。
2.修改顶层目录的Makefile文件
原始的文件部分内容如下:
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
修改后的内容如下:
Your platform. See PLATS for possible values.
PLAT= linux
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= 自己想要安装的目录
保存,make,make install
上述只能产生lua的静态库。如果要产生动态库so,则按照下面步骤来:
1、在顶层的Makefile中的
TO_LIB= liblua.a
修改为
TO_LIB= liblua.a liblua.so
2、在/src/Makefile中的如下两行之间:
ALL_A= $(LUA_A)
Targets start here.
添加如下选项
LUA_SO=liblua.so
ALL_T= (LUA_T)
(LUA_SO)
(CORE_O)
(CC) -o
? -ldl -lm
————————————————
版权声明:本文为CSDN博主「adlindary」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/adlindary/article/details/80484986
网友评论