x86主机交叉编译时安装ARM64版ncurses包及依赖错误解决
解决x86平台交叉编译ARM64程序时ncurses依赖安装失败问题
问题场景
在x86机器上交叉编译ARM64程序时出现编译错误:Error: cannot find -lncurses,尝试安装ARM64版ncurses相关包:
sudo dpkg --add-architecture arm64 sudo apt update sudo apt install libncurses5:arm64 libncursesw5:arm64 sudo apt install libncurses5-dev:arm64 libncursesw5-dev:arm64
但执行后出现依赖未满足错误,报错信息如下:
Reading package lists... Done Building dependency tree Reading state information... Done Some packages could not be installed. This may mean that you have requested an impossible situation or if you are using the unstable distribution that some required packages have not yet been created or been moved out of Incoming. The following information may help to resolve the situation: The following packages have unmet dependencies: libncurses-dev:arm64 : Depends: libncurses6:arm64 (= 6.2-0ubuntu2.1) but it is not going to be installed Depends: libncursesw6:arm64 (= 6.2-0ubuntu2.1) but it is not going to be installed Depends: libc6-dev:arm64 but it is not going to be installed or libc-dev:arm64 libtinfo6:arm64 : Depends: libc6:arm64 (>= 2.17) but it is not going to be installed E: Unable to correct problems, you have held broken packages.
解决方法
方法一:补装缺失的核心依赖
直接安装报错中明确提到的未满足依赖,先解决ARM64架构的基础C库和ncurses依赖包:
sudo apt install libc6:arm64 libc6-dev:arm64 libncurses6:arm64 libncursesw6:arm64 sudo apt install libncurses5-dev:arm64 libncursesw5-dev:arm64
方法二:使用交叉编译工具链配套库
如果使用官方交叉编译工具链(如gcc-aarch64-linux-gnu),直接安装对应架构的ncurses开发包,避免多架构依赖冲突:
sudo apt install gcc-aarch64-linux-gnu sudo apt install libncurses-dev:aarch64-linux-gnu
编译时指定工具链的库路径,示例命令:
aarch64-linux-gnu-gcc your_program.c -o your_program -lncurses -L/usr/aarch64-linux-gnu/lib/
方法三:手动交叉编译ncurses源码
若上述方法无效,可手动下载ncurses源码进行交叉编译:
- 下载并解压源码:
wget https://ftp.gnu.org/pub/gnu/ncurses/ncurses-6.4.tar.gz tar xzf ncurses-6.4.tar.gz cd ncurses-6.4
- 配置交叉编译参数:
./configure --host=aarch64-linux-gnu --prefix=/usr/aarch64-linux-gnu --enable-shared
- 编译并安装:
make sudo make install
方法四:修复系统损坏的包
若系统存在broken packages,先执行修复操作:
sudo apt-get install -f sudo dpkg --configure -a sudo apt update && sudo apt upgrade
修复完成后再重新尝试安装ARM64版ncurses包。
内容的提问来源于stack exchange,提问作者Aayush Shrivastava
相关产品推荐
相关产品推荐

