1000字范文,内容丰富有趣,学习的好帮手!
1000字范文 > ubuntu 14.04 编译yocto源码--环境配置篇

ubuntu 14.04 编译yocto源码--环境配置篇

时间:2023-09-29 06:57:11

相关推荐

ubuntu 14.04 编译yocto源码--环境配置篇

ubuntu 14.04 编译yocto源码

1. 环境安装

ubuntu 14.04

yocto依赖工具链

sudo apt-get install gawk wget git-core diffstat unzip texinfo gcc-multilib build-essential chrpath socat cpio python python3 python3-pip python3-pexpect xz-utils debianutils iputils-ping

源码已经就位

./makall

2. 错误记录

2.1 bash or dash

在kernel编译的时候提示no such arch:

这里就是shell脚本语言在做字符串匹配,而且同样的code在服务器是编译通过的,所以这里主要怀疑:

gcc的lib库是否没有安装;sh是否没有安装;

经确认主机上与服务器上sh有差异,主机默认安装为dash,替换后此错误通过:

sudo dpkg-reconfigure dash,选择no

2.2 JDK 1.8 安装

在编译到service阶段的时候出现编译错误,提示语JDK相关,在安装openjdk 1.8后可以正常编译通过,这里记录openjdk 1.8的安装过程:

替换源:

由于ubuntu中默认没有支持openjdk,所以这里需要在source.list中加入;ubuntu官网毕竟是外网,访问如同龟速,这里替换为aliyun的镜像网站;

sudo cp sources.list sources.list.bak

sudo vim /etc/apt/sources.list

具体内容:

deb /ubuntu/ xenial main restricted universe multiverse deb /ubuntu/ xenial-security main restricted universe multiverse deb /ubuntu/ xenial-updates main restricted universe multiverse deb /ubuntu/ xenial-backports main restricted universe multiverse ##测试版源deb /ubuntu/ xenial-proposed main restricted universe multiverse ## 源码 deb-src /ubuntu/ xenial main restricted universe multiverse deb-src /ubuntu/ xenial-security main restricted universe multiverse deb-src /ubuntu/ xenial-updates main restricted universe multiverse deb-src /ubuntu/ xenial-backports main restricted universe multiverse ##测试版源 deb-src /ubuntu/ xenial-proposed main restricted universe multiverse # Canonical 合作伙伴和附加 deb /ubuntu/ xenial partner deb /ubuntu/ xenial main

更新并安装jdk

sudo apt-get install update

sudo apt install openjdk-8-jre-headless

sudo apt install openjdk-8-jre

sudo apt install openjdk-8-jdk

验证:

java -version

3.2.3 libinput 编译meson失败

出错环节:

gcc /code/sumo/build/tmp/work/aarch64-poky-linux/libinput/1.9.4-r0/build/meson-private/sanitycheckc.c -o /code/sumo/build/tmp/work/aarch64-poky-linux/libinput/1.9.4-r0/build/meson-private/sanitycheckc.exe

错误信息:

/usr/bin/ld: /usr/lib/gcc/x86_64-linux-gnu/4.8/…/…/…/x86_64-linux-gnu/crti.o: unrecognized relocation (0x2a) in section `.init’

/usr/bin/ld: final link failed: Bad value

collect2: error: ld returned 1 exit status

这里提示在链接crti.o时出错,地址不识别,这里多半认为是版本问题将已经编译过得环境中crti.o替换到主机中,编译通过说明是gnu lib库有差异 gcc version 4.8.4 (Ubuntu 4.8.4-2ubuntu1~14.04.3)gcc version 4.8.4 (Ubuntu 4.8.4-2ubuntu1~14.04.4)

处理方案:

在gnu lib中替换crti.o

3.2.4 打包ext4 image错误

错误提示:

make_ext4fs执行时有库找不到

ldd 命令查看链接库:

sumo/src/build/tools$ ldd make_ext4fs

linux-gate.so.1 => (0xf773b000)

libstdc++.so.6 => not found

file命令查看make_ext4fs

make_ext4fs: ELF 32-bit LSB executable, Intel 80386, version 1 (SYSV), dynamically linked (uses shared libs), for GNU/Linux 2.6.8, not stripped

结合错误信息来看,默认这个库安装时64bit的,所以需要安装对应32bit的libstdc++.so.6

处理:

sudo apt-get install lib32stdc++6

搞定收工

3.3 总结

错误原因大多为(环境配置):

缺少某些环境或者库,例如JDK等某些环境的版本与code依赖版本不匹配,例如openssl、libgnu等等某些工具配置不对,例如bash等

在新的环境编译新的系统,总会遇到各式各样的环境问题,整体思路就是确认出错步骤,单步执行打印提示,逐步check即可

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。