华为p6 root
关于MYD-C8MMX ARM 64bit(aarch64)板子在Yocto编译过程中遇到的问题及其解决方案
在Ubuntu 16.04系统,搭配GCC version 5.4.0环境下进行Yocto编译时,可能会遇到以下问题:
问题一:
当以root用户进行编译时,可能会遇到这样的错误提示:
error1: OE-core's config sanity checker detected a potential misconfiguration. Either fix the cause of this error or at your own risk disable the checker (see sanity.conf). Following is the list of potential problems / advisories: Do not use Bitbake as root.(OE核心的配置合理性检查器检测到了一个可能的配置错误。要么修复此错误的根源,要么自行承担风险禁用检查器(参见sanity.conf)。潜在的问题/建议如下:不要以root用户身份使用Bitbake。)
解决思路:
注释掉yocto-bsp/sources/poky/meta/classes/sanity.bbclass文件中的以下两句:
```bash
if 0 == os.getuid():
raise_sanity_error("Do not use Bitbake as root.", d)
```
但注意,尽量避免以root用户身份进行Yocto编译。如果真的需要在root用户下编译,才采取上述方法。
问题二:
在编译过程中可能会遇到内存分配不足的问题,报错信息为:OSError: [Errno 12] Cannot allocate memory(无法分配内存)。此时需要加大swap内存来解决。具体操作步骤如下:
1. 使用dd命令创建一个新的swap文件,例如将swap更改为16G:“dd if=/dev/sda1 of=/newswap.file bs=100M count=150”。
2. 初始化新的swap文件:“mkswap /newswap.file”。
3. 开启swap文件:“swapon /newswap.file”,记住文件的UUID。
注意:关于Swap配置的小提示
亲爱的开发者们,你们在进行Swap配置时是否遇到了困扰呢?如果遇到权限设置的问题,一定要小心应对。尤其是当使用`/newswap.file`时,权限设置至关重要。
请确保使用以下命令开启Swap功能:
```bash
swapon /newswap.file
```
请注意,权限设置默认为不安全的0644,强烈建议修改为更加安全的0600。修改方法如下:
```bash
sudo swapoff /newswap.file
sudo chmod 600 /newswap.file
sudo swapon /newswap.file
```
完成后,可以通过`free`命令查看刚刚添加的Swap区域。
问题三:Uboot与Linux的git配置审查
在深入Uboot配置时,你可能会遇到git路径与分支设置的问题。具体表现为在查看Uboot的git路径时,发现配置有误。尤其是在检查`/home/eric/MYD-C8MMX-devel/MYIR-Yocto-i.MX8MM/sources/meta-myir/meta-myir-bsp/recipes-bsp/u-boot/u-boot-imx_2018.03.bb`文件时,需要注意以下几点修改:
确保LICENSE和LIC_FILES_CHKSUM设置正确无误。针对UBOOT_SRC的设置,确认git路径是否正确无误。SRCBRANCH则是你的git分支名称,一定要核实后在相应位置填写。SRC_URI则是将前面两者结合起来,SRCREV则依赖于AUTOREV的设置。如果在Uboot的`.git/config`中查看到的分支名字与SRCBRANCH设置不符,一定要进行相应调整。
问题四:Yocto编译遭遇意外中断
在Yocto编译过程中,如果出现意外中断(例如掉电),可能会导致编译出现问题。此时需要仔细阅读编译日志(log文件),定位问题所在。具体操作如下:首先找到log文件的位置,打开log文件和相应的执行脚本文件,搜索Error等关键字定位错误位置。针对此问题,解决方案是直接删除指定目录下的所有文件,并执行相应的清理命令,然后重新开始编译。具体操作如下:
删除目录中的所有文件:`/home/eric/MYD-C8MMX-devel/MYIR-Yocto-i.MX8MM/build_8m_mini/tmp/work/aarch64-poky-linux/libunistring`。然后执行清理命令:`bitbake c cleanall libunistring`。最后重新执行编译命令`bitbake fsl-image-qt5-validation-imx`即可。
问题五:执行“do_fetch”时的网络问题
问题六:执行bitbake命令时的困扰与解决之道
近日,我在执行bitbake命令时遇到了一个令人困惑的问题。在尝试构建项目的过程中,当执行到“do_fetch”阶段时,总是会出现一些网络相关的错误。这些错误通常表现为无法成功获取网络资源或者在网络连接缓慢时断开连接。这使我感到非常困扰,因为项目构建过程中断,无法继续进行。
在最近的一次尝试中,我重新执行了bitbake命令“fsl-image-qt5-validation-imx”,这次执行过程却出乎意料地顺利,没有再次出现任何错误。这让我感到非常欣喜,也让我有机会进一步之前出现问题的原因。
经过仔细分析,我认为之前的错误可能是由于网络连接不稳定或资源获取失败导致的。在执行“do_fetch”阶段时,需要从网络上获取必要的资源文件,如果网络连接不稳定或者资源服务器出现问题,就会导致获取失败或连接中断的问题。这次成功执行可能是由于网络连接稳定或资源服务器恢复正常所导致的。
这次经历让我意识到,在进行软件开发和构建项目时,稳定的网络连接是非常重要的。也提醒我在遇到问题时需要保持冷静,尝试不同的解决方案,最终找到问题的根源并解决它。这次的成功经验也让我更加有信心面对未来的项目构建挑战。
虽然之前遇到了许多困难,但通过不断尝试和,我最终找到了解决问题的方法。这也让我意识到在软件开发过程中不断学习和积累经验的重要性。在未来的工作中,我会继续努力提升自己,以更好地应对各种挑战和问题。问题七:
问题原因:
找不到cec-ctl.cpp文件
错误详情可查看(如上图的log.do_compile.17666文件)
解决办法:
找不到源文件
v4l-utils-1.12.3版本在编译时在以下三个文件中均会出现缺少源文件cec-ctl.cpp, cec-compliance.cpp, cec-fellow.cpp,即如下的目录
~/MYD-C8MMX-devel/04-Sources/MYIR-Yocto-i.MX8MM/build_8m_mini/tmp/work/aarch64-mx8mm-poky-linux/v4l-utils/1.12.3-r0/build/utils 下的三个文件夹cec-compliance cec-ctl cec-follower 缺失源文件(红色框的三个文件夹)
解决办法是找到源文件的三个文件夹拷贝到上图的三个文件即可
源文件目录如下:
~/MYD-C8MMX-devel/04-Sources/MYIR-Yocto-i.MX8MM/build_8m_mini/tmp/work/aarch64-mx8mm-poky-linux/v4l-utils/1.12.3-r0/v4l-utils-1.12.3/utils
执行如下三条命令(拷贝缺失的文件)
$ cp -R ~/MYD-C8MMX-devel/04-Sources/MYIR-Yocto-i.MX8MM/build_8m_mini/tmp/work/aarch64-mx8mm-poky-linux/v4l-utils/1.12.3-r0/v4l-utils-1.12.3/utils/cec-compliance ~/MYD-C8MMX-devel/04-Sources/MYIR-Yocto-i.MX8MM/build_8m_mini/tmp/work/aarch64-mx8mm-poky-linux/v4l-utils/1.12.3-r0/v4l-utils-1.12.3/utils/cec-compliance
$ cp -R ~/MYD-C8MMX-devel/04-Sources/MYIR-Yocto-i.MX8MM/build_8m_mini/tmp/work/aarch64-mx8mm-poky-linux/v4l-utils/1.12.3-r0/v4l-utils-1.12.3/utils/cec-ctl ~/MYD-C8MMX-devel/04-Sources/MYIR-Yocto-i.MX8MM/build_8m_mini/tmp/work/aarch64-mx8mm-poky-linux/v4l-utils/1.12.3-r0/v4l-utils-1.12.3/utils/cec-ctl
$ cp -R ~/MYD-C8MMX-devel/04-Sources/MYIR-Yocto-i.MX8MM/build_8m_mini/tmp/work/aarch64-mx8mm-poky-linux/v4l-utils/1.12.3-r0/v4l-utils-1.12.3/utils/cec-follower ~/MYD-C8MMX-devel/04-Sources/MYIR-Yocto-i.MX8MM/build_8m_mini/tmp/work/aarch64-mx8mm-poky-linux/v4l-utils/1.12.3-r0/v4l-utils-1.12.3/utils/cec-follower
问题八:
问题说明:
访问不了raw.githubusercontent上的资源
这种问题是在是执行“do_fetch”时报的错误,查看上图中的“log.do_fetch.29906”记录的log文件如下信息
DEBUG: Fetching using command u002639;/usr/bin/env wget -t 2 -T 30 --passive-ftp --no-check-certificate -P /home/eric/MYD-C8MMX-devel/04-Sources/MYIR-Yocto-i.MX8MM/downloads/ u002639;
DEBUG: Fetcher accessed the network with the command /usr/bin/env wget -t 2 -T 30 --passive-ftp --no-check-certificate -P /home/eric/MYD-C8MMX-devel/04-Sources/MYIR-Yocto-i.MX8MM/downloads/ u002639;
DEBUG: Running export PSEUDO_DISABLED=1; export DBUS_SESSION_BUS_ADDRESS="unix:abstract=/tmp/dbus-p6lZnPrXXW"; export SSH_AUTH_SOCK="/run/user/1000/keyring/ssh"; export PATH="/home/eric/MYD-C8MMX-devel/04-Sources/MYIR-Yocto-i.MX8MM/build_8m_mini/tmp/work/aarch64-poky-linux/python-backports-abc/0.4-r0/recipe-sysroot-native/usr/bin/python-native:/home/eric/MYD-C8MMX-devel/04-Sources/MYIR-Yocto-i.MX8MM/sources/poky/scripts:/home/eric/MYD-C8MMX-devel/04-Sources/MYIR-Yocto-i.MX8MM/build_8m_mini/tmp/work/aarch64-poky-linux/python-backports-abc/0.4-r0/recipe-sysroot-native/usr/bin/aarch64-poky-linux:/home/eric/MYD-C8MMX-devel/04-Sources/MYIR-Yocto-i.MX8MM/build_8m_mini/tmp/work/aarch64-poky-linux/python-backports-abc/0.4-r0/recipe-sysroot/usr/bin/crossscripts:/home/eric/MYD-C8MMX-devel/04-Sources/MYIR-Yocto-i.MX8MM/build_8m_mini/tmp/work/aarch64-poky-linux/python-backports-abc/0.4-r0/recipe-sysroot-native/usr/sbin:/home/eric/MYD-C8MMX-devel/04-Sources/MYIR-Yocto-i.MX8MM/build_8m_mini/tmp/work/aarch64-poky-linux/python-backports-abc/0.4-r0/recipe-sysroot-native/usr/bin:/home/eric/MYD-C8MMX-devel/04-Sources/MYIR-Yocto-i.MX8MM/build_8m_mini/tmp/work/aarch64-poky-linux/python-backports-abc/0.4-r0/recipe-sysroot-native/sbin:/home/eric/MYD-C8MMX-devel/04-Sources/MYIR-Yocto-i.MX8MM/build_8m_mini/tmp/work/aarch64-poky-linux/python-backports-abc/0.4-r0/recipe-sysroot-native/bin:/home/eric/MYD-C8MMX-devel/04-Sources/MYIR-Yocto-i.MX8MM/sources/poky/bitbake/bin:/home/eric/MYD-C8MMX-devel/04-Sources/MYIR-Yocto-i.MX8MM/build_8m_mini/tmp/hosttools"; export HOME="/home/eric"; /usr/bin/env wget -t 2 -T 30 --passive-ftp --no-check-certificate -P /home/eric/MYD-C8MMX-devel/04-Sources/MYIR-Yocto-i.MX8MM/downloads/ u002639; --progress=dot -v
--2022-06-28 12:02:19--
Resolving raw.githubusercontent (raw.githubusercontent)... 0.0.0.0, ::
Connecting to raw.githubusercontent (raw.githubusercontent)|0.0.0.0|:443... failed: Connection refused.
Connecting to raw.githubusercontent (raw.githubusercontent)|::|:443... failed: Connection refused.
WARNING: Failed to fetch URL attempting MIRRORS if available
DEBUG: Fetcher failure: Fetch command export PSEUDO_DISABLED=1; export DBUS_SESSION_BUS_ADDRESS="unix:abstract=/tmp/dbus-p6lZnPrXXW"; export SSH_AUTH_SOCK="/run/user/1000/keyring/ssh"; export PATH="/home/eric/MYD-C8MMX-devel/04-Sources/MYIR-Yocto-i.MX8MM/build_8m_mini/tmp/work/aarch64-poky-linux/python-backports-abc/0.4-r0/recipe-sysroot-native/usr/bin/python-native:/home/eric/MYD-C8MMX-devel/04-Sources/MYIR-Yocto-i.MX8MM/sources/poky/scripts:/home/eric/MYD-C8MMX-devel/04-Sources/MYIR-Yocto-i.MX8MM/build_8m_mini/tmp/work/aarch64-poky-linux/python-backports-abc/0.4-r0/recipe-sysroot-native/usr/bin/aarch64-poky-linux:/home/eric/MYD-C8MMX-devel/04-Sources/MYIR-Yocto-i.MX8MM/build_8m_mini/tmp/work/aarch64-poky-linux/python-backports-abc/0.4-r0/recipe-sysroot/usr/bin/crossscripts:/home/eric/MYD-C8