热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

ubuntu14.04编译yocto源码环境配置篇

ubuntu14.04编译yocto源码1.环境安装ubuntu14.04yocto依赖工具链sudoapt-getinstallgawkwgetgit-corediffstat

ubuntu 14.04 编译yocto源码


1. 环境安装


  1. ubuntu 14.04

  2. 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

  3. 源码已经就位

    ./makall


2. 错误记录


2.1 bash or dash

在这里插入图片描述
在kernel编译的时候提示no such arch:
在这里插入图片描述

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


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

经确认主机上与服务器上sh有差异,主机默认安装为dash,替换后此错误通过:
在这里插入图片描述
sudo dpkg-reconfigure dash,选择no


2.2 JDK 1.8 安装

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


  1. 替换源:

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

    sudo cp sources.list sources.list.bak
    sudo vim /etc/apt/sources.list

    具体内容:

    deb http://mirrors.aliyun.com/ubuntu/ xenial main restricted universe multiverse
    deb http://mirrors.aliyun.com/ubuntu/ xenial-security main restricted universe multiverse
    deb http://mirrors.aliyun.com/ubuntu/ xenial-updates main restricted universe multiverse
    deb http://mirrors.aliyun.com/ubuntu/ xenial-backports main restricted universe multiverse
    ##测试版源
    deb http://mirrors.aliyun.com/ubuntu/ xenial-proposed main restricted universe multiverse
    ## 源码
    deb-src http://mirrors.aliyun.com/ubuntu/ xenial main restricted universe multiverse
    deb-src http://mirrors.aliyun.com/ubuntu/ xenial-security main restricted universe multiverse
    deb-src http://mirrors.aliyun.com/ubuntu/ xenial-updates main restricted universe multiverse
    deb-src http://mirrors.aliyun.com/ubuntu/ xenial-backports main restricted universe multiverse
    ##测试版源
    deb-src http://mirrors.aliyun.com/ubuntu/ xenial-proposed main restricted universe multiverse
    # Canonical 合作伙伴和附加
    deb http://archive.canonical.com/ubuntu/ xenial partner deb http://extras.ubuntu.com/ubuntu/ xenial main

  2. 更新并安装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

  3. 验证:

    java -version


3.2.3 libinput 编译meson失败


  1. 出错环节:

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

  2. 错误信息:

    /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

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

    1. 在gnu lib中替换crti.o

3.2.4 打包ext4 image错误


  1. 错误提示:

    make_ext4fs执行时有库找不到

  2. ldd 命令查看链接库:

    20201016sumo/src/build/tools$ ldd make_ext4fs

    linux-gate.so.1 => (0xf773b000)
    libstdc++.so.6 => not found

  3. 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

  4. 处理:

    sudo apt-get install lib32stdc++6

    搞定收工


3.3 总结

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


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

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


推荐阅读
  • 利用 Calcurse 在 Linux 终端高效管理日程与任务
    对于喜爱使用 Linux 终端进行日常操作的系统管理员来说,Calcurse 提供了一种强大的方式来管理日程安排、待办事项及会议。本文将详细介绍如何在 Linux 上安装和使用 Calcurse,帮助用户更有效地组织工作。 ... [详细]
  • 在Python编程中,经常需要处理文件下载的任务。本文将介绍三种常用的下载方法:使用urllib、urllib2以及requests库进行HTTP请求下载,同时也会提及如何通过ftplib从FTP服务器下载文件。 ... [详细]
  • 本文介绍了如何在不同操作系统上安装Git,以及一些基本和高级的Git操作,包括项目初始化、文件状态检查、版本控制、分支管理、标签处理、版本回退等,并简要提及了开源许可协议的选择。 ... [详细]
  • 在 Ubuntu 22.04 LTS 上部署 Jira 敏捷项目管理工具
    Jira 敏捷项目管理工具专为软件开发团队设计,旨在以高效、有序的方式管理项目、问题和任务。该工具提供了灵活且可定制的工作流程,能够根据项目需求进行调整。本文将详细介绍如何在 Ubuntu 22.04 LTS 上安装和配置 Jira。 ... [详细]
  • 在Ubuntu 18.04上使用Nginx搭建RTMP流媒体服务器
    本文详细介绍了如何在Ubuntu 18.04上使用Nginx和nginx-rtmp-module模块搭建RTMP流媒体服务器,包括环境搭建、配置文件修改和推流拉流操作。适用于需要搭建流媒体服务器的技术人员。 ... [详细]
  • 在Java开发中,保护代码安全是一个重要的课题。由于Java字节码容易被反编译,因此使用代码混淆工具如ProGuard变得尤为重要。本文将详细介绍如何使用ProGuard进行代码混淆,以及其基本原理和常见问题。 ... [详细]
  • 本文详细介绍了在 CentOS 7 系统中安装 Python 3.7 的步骤,包括编译工具的安装、Python 3.7 源码的下载与编译、软链接的创建以及常见错误的处理方法。 ... [详细]
  • Node.js在服务器上的多种部署策略
    本文探讨了Node.js应用程序在服务器上部署的几种有效方法,包括使用Screen、PM2以及通过宝塔面板进行简易管理。 ... [详细]
  • Bootstrap Paginator 分页插件详解与应用
    本文深入探讨了Bootstrap Paginator这款流行的JavaScript分页插件,提供了详细的使用指南和示例代码,旨在帮助开发者更好地理解和利用该工具进行高效的数据展示。 ... [详细]
  • 本文详细介绍了如何在VSCode中正确配置Python环境,包括通过不同方式安装Python以及如何安装和配置Python插件,确保开发环境顺利搭建。 ... [详细]
  • HTML前端开发:UINavigationController与页面间数据传递详解
    本文详细介绍了如何在HTML前端开发中利用UINavigationController进行页面管理和数据传递,适合初学者和有一定基础的开发者学习。 ... [详细]
  • 如何处理PHP缺少扩展的问题
    本文将详细介绍如何解决PHP环境中缺少扩展的问题,包括检查当前环境、修改配置文件以及验证修改是否生效的具体步骤,帮助开发者更好地管理和使用PHP扩展。 ... [详细]
  • AcetoneISO:Ubuntu Linux下的全能虚拟光驱工具
    AcetoneISO 是一款功能强大的虚拟光驱软件,适用于 Linux 和 Mac 系统。它支持多种映像文件格式的挂载和转换,并提供丰富的文件管理功能。 ... [详细]
  • Ubuntu 22.04 安装搜狗输入法详细指南及常见问题解决方案
    本文将详细介绍如何在 Ubuntu 22.04 上安装搜狗输入法,并提供常见问题的解决方法。包括下载安装包、更新源、安装依赖项等步骤。 ... [详细]
  • 本文详细介绍如何在忘记MySQL服务器密码的情况下进行密码重置,包括具体的步骤和注意事项。 ... [详细]
author-avatar
9位特权QQ号码连号
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有