如何在OpenSuSE 15.6上构建AUR包以实现树莓派交叉编译?
解决OpenSuSE 15.6上构建树莓派交叉编译器的问题
方法1:直接使用OpenSuSE官方仓库的交叉编译工具链
这是最省心的方案,OpenSuSE官方提供了armhf架构的交叉编译器包,无需折腾AUR源码:
- 打开终端,执行以下命令安装基础交叉编译工具:
sudo zypper install cross-armv7hl-linux-gnueabihf-gcc cross-armv7hl-linux-gnueabihf-glibc cross-armv7hl-linux-gnueabihf-binutils - 安装完成后,交叉编译器的命令前缀为
armv7hl-linux-gnueabihf-,比如armv7hl-linux-gnueabihf-gcc就是编译armhf程序的编译器。
方法2:手动解析并执行AUR PKGBUILD中的编译步骤
如果必须使用AUR的源码包,可以手动提取PKGBUILD中的编译逻辑,跳过makepkg依赖:
- 进入你git clone下来的AUR包目录,打开
PKGBUILD文件,查看其中的关键部分:source字段:确认所有源码包已就绪(git clone通常会包含或自动拉取相关资源)prepare()函数:手动执行其中的预处理命令,比如解压补丁、配置环境变量等build()函数:复制里面的编译命令,在终端手动运行package()函数:若需安装到系统,复制里面的安装步骤执行(注意权限,可能需要sudo)
- 示例:假设PKGBUILD的build函数如下:
你可以手动执行:build() { cd "${srcdir}/gcc-${pkgver}" ./configure --target=arm-linux-gnueabihf --prefix=/usr --enable-languages=c,c++ make -j$(nproc) }cd gcc-<对应版本号> ./configure --target=arm-linux-gnueabihf --prefix=/usr --enable-languages=c,c++ make -j$(nproc) sudo make install
方法3:用容器/虚拟机运行Arch Linux编译
如果上述方法都不适用,可以通过容器或虚拟机启动Arch Linux环境,在里面用makepkg编译:
- 使用Podman/Docker拉取Arch镜像:
podman pull archlinux podman run -it -v /path/to/your/aur/pkg:/mnt archlinux - 在容器内安装makepkg依赖:
pacman -Syu base-devel git - 进入挂载的目录,执行
makepkg -si编译并安装,之后把编译好的包(.pkg.tar.zst格式)复制到OpenSuSE系统,手动解压安装。
内容的提问来源于stack exchange,提问作者Neppomuk
相关产品推荐
相关产品推荐

