aarch64环境下编译国标GB28181协议国标GB28181平台EasyGBS视频平台于Lua编译内无法执行是什么问题?
程序员文章站
2022-07-05 11:34:21
...
针对在aarch64环境下编译产品,需要很多依赖,我们曾经在aarch64下编译过EasyRTSPLive,碰到了数据库重复定义的问题。在aarch64环境下,我们近期也尝试编译了EasyGBS,通过Lua编译时,我们也遇到了部分问题。下面跟大家分享两个我们遇到的问题。
EasyGBS播放界面
问题1:readline/readline.h:没有那个文件或目录
编译系统命令里面出现:luaconf.h:275:31: fatal error: readline/readline.h: 没有那个文件或目录
编译Lua需要readline库,这个报错的原因就是从系统环境中没有找到readline对应的库,所以我们需要使用源码进行编译。
Readline编译步骤
1)下载Readline源码
wget -c ftp://ftp.gnu.org/gnu/readline/readline-6.2.tar.gz
2)解压后进行编译
tar -vxf readline-6.2.tar.gz
cd readline-6.2
./configure CC=aarch64-linux-gnu-gcc --host=aarch64-linux-gnu CROSS_COMPILE=aarch64-linux-gnu-gcc --enable-static --disable-shared --prefix=/opt/aarch64/readline-6.2
Make & make install
编译完成后,在安装目录生成readline 库文件已经需要的头文件
同时在Lua的Makefile中增加readline连接库。如下图配置
问题2:machine aarch64 not recognized
编译系统命令里面出现:machine aarch64 not recognized,表示系统没有识别到aarch64程序。
进入到support 目录执行如下命令,下载最新的配置文件
wget -O config.guess 'http://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.guess;hb=HEAD'
wget -O config.sub 'http://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.sub;hb=HEAD'
最后编译lua
make linux CC=aarch64-linux-gnu-gcc
两个问题都解决后,lua编译完成,生成liblua.a即可。