lua/demux.c:55:13: 错误:implicit declaration of function ‘luaL_checkint’; did you mean ‘luaL_checkany’

当前操作系统(CentOS-8.1.1911-x86_64-dvd1.iso ):http://mirrors.zju.edu.cn/centos/8.1.1911/isos/x86_64/

在安装的时候装的是带UI界面的服务版本,在开发过程中又安装了很多库,如果大家在使用lua的时候提示需要装依赖库,就直接装就好,我这个当前没有提示,所以未列出。

官方源码包最新下载链接:https://www.lua.org/download.html

官方源码包历史版本下载链接:https://www.lua.org/ftp/

处理好的资源下载链接:Mylua-5.1.tar.gz

处理好的资源下载链接:Mylua-5.2.4.tar.gz

处理好的资源下载链接:Mylua-5.3.0.tar.gz

处理好的字眼下载链接:Mylua-5.3.4.tar.gz

 

这个错误的原因是,编译vlc-3.0.9.2时,安装的依赖包lua5.3版本中,有个向下兼容的宏:LUA_COMPAT_5_2 ,没有成功加载导致。

处理办法:在源码包中,此宏定义在GCC中,打开lua-5.3.4/src/Makefile,可以看到:CFLAGS= -O2 -Wall -Wextra -DLUA_COMPAT_5_2 $(SYSCFLAGS) $(MYCFLAGS)。

lua/demux.c:55:13: 错误:implicit declaration of function ‘luaL_checkint’; did you mean ‘luaL_checkany’
默认编译后,再回头编译vlc开源库,发现:lua/demux.c:55:13: 错误:implicit declaration of function ‘luaL_checkint’; did you mean ‘luaL_checkany’
经过查找后发现,此gcc中宏定义没有生效,可能加载顺序出了问题,直接在Makefile中去掉,在 304行 #if defined(LUA_COMPAT_5_2) 之前添加#define LUA_COMPAT_5_2

lua/demux.c:55:13: 错误:implicit declaration of function ‘luaL_checkint’; did you mean ‘luaL_checkany’
之后重新编译,OK。