应自己编译安装Lua 5.4到用户目录:先装依赖sudo apt install build-essential libreadline-dev libncurses5-dev libssl-dev,再下载解压lua-5.4.7.tar.gz,执行make linux test验证,然后make INSTALL_TOP=$HOME/local install,最后将$HOME/local/bin加入PATH并配置luarocks --lua-dir $HOME/local。

直接用 apt install lua5.4 能跑 lua -v,但大概率装不上 luarocks、require "socket" 会失败——因为缺头文件、模块路径错、或和系统自带的 /usr/bin/lua 冲突。真要稳定用,得自己编译安装 Lua 5.4 并配好 luarocks。
怎么编译安装 Lua 5.4 到用户目录(不碰系统路径)
这是最可控的方式,避免后续 apt upgrade 覆盖或冲突。
- 先装依赖:
sudo apt install build-essential libreadline-dev libncurses5-dev libssl-dev;漏掉libreadline-dev会导致交互式 Lua 无法用上下箭头翻历史命令 - 下载解压:
curl -L -R -O https://www.lua.org/ftp/lua-5.4.7.tar.gz && tar zxf lua-5.4.7.tar.gz && cd lua-5.4.7 - 验证编译没问题:
make linux test(别急着make install) - 装到用户目录:
make INSTALL_TOP=$HOME/local install,然后把$HOME/local/bin加进$PATH(比如写进~/.bashrc) - 确认生效:
which lua应该输出/home/you/local/bin/lua,lua -v显示 5.4.7
Shebang 写错导致 “bad interpreter: No such file or directory”
这不是 Lua 挂了,是脚本第一行路径没对上。
Zynq‑7000 / Zynq UltraScale+ 硬件调试技能。适用于 Xilinx Zynq(Cortex‑A9/A53 + FPGA)Linux 环境,调试 I2C、I2S、UART、GPIO 等外设。包括设备树配置、内核驱动、用户空间调试工具、交叉编译和常见问题排查,支持 PetaLinux 开发。
- 检查脚本首行是不是
#!/usr/bin/env lua5.4,但你实际装的是$HOME/local/bin/lua——env找不到就报这个错 - 稳妥做法:直接写死路径,比如
#!/home/you/local/bin/lua - 记得加执行权限:
chmod +x script.lua - 如果从 Windows 编辑过,可能带 CRLF 换行符,用
dos2unix script.lua清理
luarocks install luasocket 报 “Could not find Lua header files”
本质是 luarocks 编译 C 模块时找不到 lua.h,不是网络或权限问题。
- 自己编译安装的 Lua,检查头文件是否存在:
ls $HOME/local/include/lua.h;不存在说明make install没跑完,或路径设错了 - 用
luarocks --lua-dir $HOME/local configure显式告诉它头文件在哪 - 验证配置:
luarocks config variables.LUA_INCDIR应该输出/home/you/local/include - 如果还卡在
gcc: error: lua.h: No such file or directory,说明 luarocks 没读到配置,重跑 configure 或检查环境变量LUA_DIR
为什么不用 apt install lua5.4 就省事?
因为 Ubuntu 的 lua5.4 包不带 luarocks,lua5.4-dev 版本常滞后,且 luarocks 默认找 /usr/include/lua5.4,而你装的模块(如 luasocket)又依赖 liblua5.4-dev 提供的 .so 和头文件——路径、版本、权限三者稍有不匹配,require 就静默失败。自己编译能确保 lua、luac、include/、lib/ 全在一处,luarocks 也只认这一个源。

















