[Emuelec]编译遇到的坑及其解决办法

11 篇文章 3 订阅
9 篇文章 4 订阅
本文介绍了在编译Emuelec时可能遇到的网络访问困难、git子模块同步失败、zip包解压不完整以及Go模块下载问题,并提供了相应的解决方案,包括手动更新子模块、修复文件状态、修改解压命令以及设置Go全局代理。
摘要由CSDN通过智能技术生成

如果你编译emuelec时遇到各种报错,可以参考下列趟坑经验。

1.访问github等国外源码网站不畅导致编译出错:

由于国内网络的原因,访问github各种被中断,导致emuelec中各个子模块应无法获取源代码而无法编译。

解决办法:挨个找到报错的target,手动检查是否包含的git子模块仓库,如果有,则在target仓库中执行git submodule update --init命令,可能需要反复执行,直到所有子模块都更新完毕

git submodule update --init

2.接上面,由于网络导致git子模块同步失败,而emuelec的脚本又会删除子模块中的文件,所以导致即使代码已经更新下来了,编译时还是会报错。这时,你需要进入sources文件夹,找到对应报错的target源码文件夹,挨个检查子模块的文件变动状态,及时将文件状态还原回来。进入相应的git子模块仓库,执行下列还原命令

git restore --staged * && git restore *

3.zip包发布的源码,二次解压时没有覆盖解压

此问题在反复编译jzintv target时发现的。原来是scripts/extract脚本中解压zip文件时没有覆盖解压文件导致的。处理的方式一:进入build将jzintv的文件夹删除,并重新解压。方式二,修改scripts/extract中解压zip包那处命令,添加-o 覆盖解压选项

  *.zip)
    unzip -o -q "${FULL_SOURCE_PATH}" -d "${2}"

一个自动git子模块更新的脚步,程序一直运行,直到所有的submodule被更新完毕。

使用方法:保存脚本到任意目录,然后进入sources下有submodule的项目,然后执行这个脚本

#!/bin/bash
# date:
#    #1: 2022.09.14
# filename: rgitsub.sh
# function:一直更新submodule 直到所有submodule都被更新完毕

while true

do

procnum=`ps -ef | grep "git submodule update --init" | grep -v "grep" | wc -l`
GIT_SUBMODULE_PARAMS="${1}"
if [ $procnum -eq 0 ]; then
	if [ -n "${GIT_SUBMODULE_PARAMS}" ]; then
		git submodule update --init --recursive "${GIT_SUBMODULE_PARAMS}" && exit 0
	else
		git submodule update --init && exit 0
	fi
fi

sleep 30

done

4.go模块无法下载的问题

也是个国内网络的问题,可以在编译镜像之前,执行设置go的全局代理的命令,比如使用https://goproxy.io

 export GOPROXY=https://goproxy.io

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值