精华内容
下载资源
问答
  • 搭建交叉编译环境

    2015-04-12 19:39:55
    分为X86和arm两个版本,比较详细,分步骤写清楚了如何搭建
  • Linux搭建交叉编译环境

    千次阅读 2019-04-29 00:03:04
    记录一下搭建嵌入式交叉编译环境的悲惨过程 【WHY】为什么要搭建交叉编译环境呢? 我本来想在板子arm9(2440)上跑个程序的,但Linux下gcc编译生成的可执行文件,竟然没办法在板子上跑,大概是格式问题吧(说大概是...

    记录一下搭建嵌入式交叉编译环境的悲惨过程

    【WHY】为什么要搭建交叉编译环境呢?

    	我本来想在板子arm9(2440)上跑个程序的,但Linux下gcc编译生成的可执行文件,竟然没办法在板子上跑,大概是格式问题吧(说大概是因为自己目前不能百分百确定)。然后了解到要搭建交叉编译环境,要用arm-linux-gcc来编译程序,才能在板子上跑,于是就有了后续这些于是了。
    

    【WHAT】

    	使用的交叉工具链是arm-linux-gcc
    

    【HOW】如何搭建呢?

    好了,是该进入正题了:
    先去官网下载一个arm-linux-gcc安装包,把它放在linux自己中意的目录中,然后解压,解压步骤使用的命令如下。

    tar -zxvf arm-linux-gcc-4.4.3.tar.gz 
    

    解压完成,也就代表安装完成了,接下来就是配置系统环境变量,把交叉编译链的路径添加到PATH中,以便在任何路径下可以直接使用arm-linux-gcc这个命令。而在/etc/profile文件中进行配置的话,就相当于永久配置了。所以:
    打开/etc/profile文件,在文件末尾加上下面一句

    export PATH=$PATH:/root/arm-linux-gcc-4.4.3/FriendlyARM/toolschain/4.4.3/bin
    

    保存后,使用下面命令之一让它立即生效,注意点 . 和 / 之间是有空格的

    . /etc/profile
    soure /etc/profile
    

    很好,讲道理到这里就可以了吧,一般也就是如此。只是呢,很悲催,我一使用arm-linux-gcc这条命令就出现一堆问题。下面介绍我遇到的这些乱七八糟的问题及其解决方法。
    问题1:
    /root/arm-linux-gcc-4.4.3/FriendlyARM/toolschain/4.4.3/bin/arm-linux-gcc: /root/arm-linux-gcc-4.4.3/FriendlyARM/toolschain/4.4.3/bin/.arm-none-linux-gnueabi-gcc: /lib/ld-linux.so.2: bad ELF interpreter: 没有那个文件或目录
    /root/arm-linux-gcc-4.4.3/FriendlyARM/toolschain/4.4.3/bin/arm-linux-gcc:行15: /root/arm-linux-gcc-4.4.3/FriendlyARM/toolschain/4.4.3/bin/.arm-none-linux-gnueabi-gcc: 成功
    解决办法:
    yum install ld-linux.so.2

    问题2:
    /root/arm-linux-gcc-4.4.3/FriendlyARM/toolschain/4.4.3/bin/…/libexec/gcc/arm-none-linux-gnueabi/4.4.3/cc1: error while loading shared libraries: libstdc++.so.6: cannot open shared object file: No such file or directory
    解决办法:
    [root@localhost arm_linux_gcc_test]# yum list |grep libstdc++.so.6
    查看哪个安装包包含该库:
    [root@localhost arm_linux_gcc_test]# yum provides libstdc++.so.6
    已加载插件:langpacks, product-id, search-disabled-repos, subscription-manager
    This system is not registered with an entitlement server. You can use subscription-manager to register.
    libstdc+±4.8.5-16.el7.i686 : GNU Standard C++ Library
    源 :rhel7-4
    匹配来源:
    提供 :libstdc++.so.6
    [root@localhost arm_linux_gcc_test]# yum install libstdc+±4.8.5-16.el7.i686

    问题3:
    [root@localhost arm_linux_gcc_test]# arm-linux-gcc hello.c -o hello
    /root/arm-linux-gcc-4.4.3/FriendlyARM/toolschain/4.4.3/bin/…/lib/gcc/arm-none-linux-gnueabi/4.4.3/…/…/…/…/arm-none-linux-gnueabi/bin/as: error while loading shared libraries: libz.so.1: cannot open shared object file: No such file or directory
    解决方法:
    [root@localhost arm_linux_gcc_test]# yum provides libz.so.1
    已加载插件:langpacks, product-id, search-disabled-repos, subscription-manager
    This system is not registered with an entitlement server. You can use subscription-manager to register.
    zlib-1.2.7-17.el7.i686 : The compression and decompression library
    源 :rhel7-4
    匹配来源:
    提供 :libz.so.1

    [root@localhost arm_linux_gcc_test]# yum install zlib-1.2.7-17.el7.i686

    [root@localhost arm_linux_gcc_test]# arm-linux-gcc hello.c -o hello
    [root@localhost arm_linux_gcc_test]# ls
    hello hello.c

    总算大功告成!

    参照博文:
    https://blog.csdn.net/weixin_37985816/article/details/81188865

    展开全文
  • ubuntu搭建交叉编译环境 1.下载Arm-Linux-gcc-4.4.3.tar.gz 2.可以在新建一个文件夹,比如说就叫arm;进入arm文件夹用tar xvzf arm-linux-gcc-4.4.3.tar.gz解压 3.用命令 ls 可以看到一个opt的文件 我们要做的就是把...

    ubuntu搭建交叉编译环境

    1.下载Arm-Linux-gcc-4.4.3.tar.gz

    2.可以在新建一个文件夹,比如说就叫arm;进入arm文件夹用tar xvzf arm-linux-gcc-4.4.3.tar.gz解压

    3.用命令 ls 可以看到一个opt的文件 我们要做的就是把这个opt文件的bin目录加入到系统的路径中;

    4.好我们开始来找opt的bin目录;用cd opt/然后用tab键补全功能即可找到bin

    5.进入bin目录,输入命令pwd ;显示的这个路径就是你要写进path变量的路径,记住哦。

    6.我们可以用bash.bashrc命令然后在文件添加路径;在最后面写入`

    if [ -d /home/你自己的电脑用户名/arm/opt/FriendlyARM/toolschain/4.4.3]; then
      PATH=你刚刚用pwd查看的路径 :"${PATH}"
      fi
      
    

    保存退出

    7.命令source etc/bash.bashrc 让文件立即生效;echo $PATH查看是否有刚刚添加的路径,如果有,恭喜安装成功。

    展开全文
  • 这是一个指导怎样搭建交叉编译环境的pdf文档 写的很仔细,值得一看
  • CentOS 7 搭建交叉编译环境(下)

    千次阅读 2019-11-27 22:28:03
    上篇文章已经介绍了Linux交叉编译的基础概念、为什么需要引入交叉编译以及从GCC编译流程的四个步骤出发讲述了搭建交叉编译环境需要构建的一条交叉编译工具链主要有哪些构成的,此外还对当前使用较多的crosstool-ng...


    上篇文章已经介绍了Linux交叉编译的基础概念、为什么需要引入交叉编译以及从GCC编译流程的四个步骤出发讲述了搭建交叉编译环境需要构建的一条交叉编译工具链主要有哪些构成的,此外还对当前使用较多的crosstool-ng工具进行了介绍和安装,本篇就具体采用crosstool-ng工具来制作 MIPS64 交叉编译环境(arm也同样适用,只是选择设置有些不一样)。

    在制作交叉编译工具链之前,我们需要做两件事:

    第一,新建用户,如zhb

    [root@localhost ~]# adduser zhb //添加用户
    [root@localhost ~]# passwd zhb //设置密码
    

    :不要用root 用户去构建工具链,否则可能会报类似如下错误(一般默认不允许root用户):
    在这里插入图片描述
    第二:我们先创建一些目录,存放后期制作交叉编译环境,执行如下命令:

    [zhb@localhost ~]$ mkdir -p crosstool-23/{build,src,x-tools}

    目录结构及说明如下:

    [zhb@localhost crosstool-23]$ tree
    .
    ├── build  //专门为后期使用crosstool-ng去建立交叉编译器的编译(build)而专门建立的文件夹对应的,后续的ct-ng menuconfig,ct-ng build等命令,都是在此文件夹下执行的
    ├── src  //存后续需要下载各种软件的源码包,我们可以先下载好放里面
    └── x-tools  //用crosstool-ng所生成的交叉编译器所在的路径
    

    接下来我们就可以开始制作我们的交叉编译工具链,本文将以针对 MIPS 64架构制作交叉交叉编译工具链。

    首先,我们可以查看当前版本的有哪些模板样例,执行如下命令:

    [zhb@localhost crosstool-23]# ct-ng list-samples  // 该命令查看可用模板,内容比较多,中间就忽略了
    Status  Sample name
      LN    config
    [G..]   aarch64-rpi3-linux-gnueabi
    [G..]   arm-unknown-linux-gnueabi
    ------省略--------
    [G..]   mips64el-multilib-linux-uclibc
    [G..]   mipsel-unknown-linux-gnu
    ------省略--------
    [G..]   powerpc-405-linux-gnu
    [G..]   powerpc-unknown-linux-gnu
    ------省略--------
    [G.X]   x86_64-w64-mingw32
    [G..]   xtensa-fsf-linux-uclibc
    

    注: 这些模板也可以进入/zhb/crosstool-ng-1.23.0/samples 目录(即源码目录)种看到;

    本文就选一个最接近的模板mips64el-multilib-linux-uclibc ,然后修改,我们希望用的运行库是glibc 的,也就是最后生成的交叉编译环境是mips64el-zhb-linux-gnu(注:gnu = glibc + oabi)。

    第一步:进入目录/home/zhb/crosstool-23/build,执行命令 ct-ng mips64el-multilib-linux-uclibc

    第二步:执行命令 ct-ng menuconfig,进入如下界面:
    在这里插入图片描述

    1、选择 Paths and misc options 设定源码包路径和交叉编译工具链的安装路径等;
    在这里插入图片描述
    1)按“空格键”启用Try features marked as EXPERIMENTAL

    2)设置src目录,如上${HOME}/crosstool-23/src

    3)设置构建工作目录,如上${HOME}/crosstool-23/build

    4)设置生成工具链的目录,如上${HOME}/crosstool-23/x-tools

    5)设置编译工作线程数量,加快制作速度,上图往下翻,会有选项 Number of parallel jobs ,如设置该数量为8.


    2、接着进入到Target options,这里我们选择ABI为n64;
    在这里插入图片描述

    3、进入Toolchain options ,修改 Tuple‘s vendor string 为自己想要的,如zhb(这里是本人姓名简写)
    在这里插入图片描述

    4、接着进入C-library ,修改使用的C运行库为glibc(原来模板是ulibc)
    在这里插入图片描述

    5、进入Companion tools ,启用m4 和make (默认没有选择)
    在这里插入图片描述

    当配置好以后,退出保存即可,在build 目录下面会有个.config 文件(隐藏文件),里面保存的就是上面选择的配置,当然我们也可以通过手动修改该文件去配置生成我们的交叉编译工具链。

    第三步:执行如下命令进行工具链的生成:

    [zhb@localhost build]$ ct-ng build
    

    :这时如果你之前没有下载相关的源码到${HOME}/crosstool-23/src目录下,那么他会先下载源码到该目录下,如果出现源码自动下载不下来,你可以手动下载好放入${HOME}/crosstool-23/src目录下。我在写这篇文章的时候,就是将所有需要的源码下载好放入${HOME}/crosstool-23/src目录下的。

    如果出现如下错误:

    [ERROR]    make[1]: *** [Makefile:3687: doc/automake-1.15.1] Error 2

    解决方案:进入/home/zhb/crosstools-23/build/src/automake-1.15 目录下,修改Makefile.in 文件,添加 --no-discard-stderr,如下图所示:
    在这里插入图片描述

    回到/home/zhb/crosstools-23/build目录,继续执行ct-ng build ,如果出现如下错误:

    configure: error: C++ compiler not available, see config.log for details
    

    解决方案:安装gcc-c++ ,即执行 yum install gcc-c++.x86_64 安装即可;

    继续执行 ct-ng build (本文没有考虑上一步执行情况,其实我们可以继续上一步执行的,有兴趣可以百度~)

    出现如下界面,表示交叉编译环境构建成功,可以看到大概花了50分钟左右(当然这还是源代码都已经下载好的情况的,在没有源码的情况下时间会更长);
    在这里插入图片描述

    进入目录/home/zhb/x-tools}/bin,并执行如下看到如下表示OK了在这里插入图片描述
    第四步:测试

    编译文件testPrint.c,内容如下:

    #include <stdio.h>
    
    int main()
    {
        printf("hello world!");
        return 0;
    }

    执行如下命令进行编译(在实际环境中,我们一般会将该命令加入到环境变量中并给其一个“别名”使用):

    [root@localhost bin]# ./mips64el-zhb-linux-gnu-gcc testPrint.c -o testPrint
    

    注: 交叉编译的默认搜索头文件路径与普通的gcc不一样,如果想知道的话,可以通过执行如下命令查看,如果编译的时候加入了-nostdinc,则不会到默认路径下去搜索。

    echo 'main(){}'| mips64el-zhb-linux-gnu-gcc -E -v - 

    编译成功后,通过file查看 testPrint 文件信息:

    [root@localhost bin]# file testPrint
    testPrint: ELF 64-bit LSB executable, MIPS, MIPS-III version 1 (SYSV), dynamically linked (uses shared libs), for GNU/Linux 4.10.8, with unknown capability 0x756e670000000f41 = 0x304000000070100, not stripped

    还可以再通过命令readelf 查看更多详细信息,如下:
    在这里插入图片描述
    可以看出该文件是属于MIPS架构下的一个可执行文件;最后我们在本机(X86机构)上执行一下看看,结果显示不是可以二进制文件,如下所示:

    [zhb@localhost bin]$ ./testPrint
    bash: ./testPrint: cannot execute binary file

    由于我这边暂时没有可用的MISP 64位开发板,也没有模拟机器,所以就没法放到MIPS架构的机器上执行演示了,如果感兴趣可以自己尝试尝试~


    好了,到这里我们的MIPS架构的交叉编译器就搭建完成了,谢谢阅读~

    展开全文
  • Ubuntu搭建交叉编译环境说点什么吧为什么需要交叉编译交叉编译环境简介Arm交叉编译环境搭建Mips交叉编译环境搭建Powerpc交叉编译环境搭建 说点什么吧 为什么需要交叉编译 如果要做设备、嵌入式等工作,交叉编译必不...

    说点什么吧

    为什么需要交叉编译

    如果要做设备、嵌入式等工作,交叉编译必不可少,
    嵌入式设备的内存小甚至无法启动编译,只好在主机上编译,再将编译后的程序放到嵌入式设备中。

    交叉编译环境简介

    架构-厂商-平台 区分程序
    例如:i386-pc-linux2.4.3

    架构-平台-编译器 区分编译环境
    例如:arm-linux-gcc

    Arm交叉编译环境搭建

    我们搭建arm-linux-gcc编译环境:
    首先Ctrl+Alt+T弹出终端,使用如下命令进行arm-linux-gcc的安装:
    方法一(不推荐,往往出错):

    sudo apt-get install gcc-arm-linux-gnueabihf
    

    使用如下命令进行arm-linux-g++的安装:

    sudo apt-get install g++-arm-linux-gnueabihf
    

    方法二(推荐):

    一、下载解压
    下载arm-linux-gcc-4.4.3.tar.gz
    放到/home/darui/Desktop/arm-linux-gcc中解压

    二、配置系统环境变量

    sudo gedit /etc/profile
    

    最后一行加上

    export PATH=$PATH:/home/darui/Desktop/arm-linux-gcc/opt/FriendlyARM/toolschain/4.4.3/bin
    

    保存生效

    source /etc/profile
    

    三、检查一下

    arm-linux-gcc -v
    Using built-in specs.
    Target: arm-none-linux-gnueabi
    Configured with: /opt/FriendlyARM/mini2440/build-toolschain/working/src/gcc-4.4.3/configure --build=i386-build_redhat-linux-gnu --host=i386-build_redhat-linux-gnu --target=arm-none-linux-gnueabi --prefix=/opt/FriendlyARM/toolschain/4.4.3 --with-sysroot=/opt/FriendlyARM/toolschain/4.4.3/arm-none-linux-gnueabi//sys-root --enable-languages=c,c++ --disable-multilib --with-arch=armv4t --with-cpu=arm920t --with-tune=arm920t --with-float=soft --with-pkgversion=ctng-1.6.1 --disable-sjlj-exceptions --enable-__cxa_atexit --with-gmp=/opt/FriendlyARM/toolschain/4.4.3 --with-mpfr=/opt/FriendlyARM/toolschain/4.4.3 --with-ppl=/opt/FriendlyARM/toolschain/4.4.3 --with-cloog=/opt/FriendlyARM/toolschain/4.4.3 --with-mpc=/opt/FriendlyARM/toolschain/4.4.3 --with-local-prefix=/opt/FriendlyARM/toolschain/4.4.3/arm-none-linux-gnueabi//sys-root --disable-nls --enable-threads=posix --enable-symvers=gnu --enable-c99 --enable-long-long --enable-target-optspace
    Thread model: posix
    gcc version 4.4.3 (ctng-1.6.1) 
    

    四、交叉编译下

    引入环境变量

    source /etc/profile
    

    安装库

    sudo apt-get install lib32stdc++6
    sudo apt-get install lib32z1
    

    编译

    arm-linux-gcc -o new.c pp
    

    成功
    在这里插入图片描述

    Mips交叉编译环境搭建

    一、下载解压
    OpenWrt SDK for C/C++ for Linux(还是建议在64位下使用)

    https://docs.labs.mediatek.com/resource/linkit-smart-7688/zh_cn/downloads
    

    解压

    tar -jxvf OpenWrt-SDK-ramips-mt7688_gcc-4.8-linaro_uClibc-0.9.33.2.Linux-x86_64.tar.bz2
    

    二、配置环境变量

    gedit ~/.bashrc
    

    导粗解压的文件夹(注:到四级文件夹了

    export PATH=$PATH:/home/darui/Desktop/mips-linux-gcc/OpenWrt-SDK-ramips-mt7688_gcc-4.8-linaro_uClibc-0.9.33.2.Linux-x86_64/staging_dir/toolchain-mipsel_24kec+dsp_gcc-4.8-linaro_uClibc-0.9.33.2/bin
    

    保存

    source ~/.bashrc
    

    注:bashrc是用户的环境变量,添加root下的bashrc变量,普通用户是没有添加变量的 /etc/profile是全体的环境变量

    三、交叉编译下

    在这里插入图片描述

    Powerpc交叉编译环境搭建

    一、安装apt管理器

    sudo add-apt-repository univers
    sudo apt update
    sudo apt install synaptic
    

    二、下载环境

     sudo synaptic
    

    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    选择完点击上面的应用/apply,apply完成安装

    在命令终端输入“powerpc-linux-gnu-”按“TAB”补全可以查看到“powerpc-linux-gnu-gcc”工具链
    在这里插入图片描述
    三、交叉编译下
    在这里插入图片描述在这里插入图片描述
    成功,三个交叉编译的环境都配好了

    展开全文
  • 搭建编译环境官方教程,全英文: ... 交叉编译是在linux主机上安装的,比如我使用vmware 虚拟了ubuntu16.0 系统,在此基础上安装的交叉编译环境。...下面简单介绍下,如何搭建交叉编译环境: 1.首先下载交叉编
  • 关于树莓派2b与qt5搭建交叉编译环境,网上有很多相关的教程,但是我尝试了几种方式都未能成功,其中的方法:在window系统搭建交叉编译环境,在Ubuntu16.04系统搭建交叉编译环境或者是在Ubuntu18.04,,都没有成功,...
  • larbin编译环境搭建、larbin编译环境潜入web开发的漏扫(scanner)中的方法及一些对遇到的问题的说明
  • redhat下搭建交叉编译环境一个问题 昨晚帮同学在redhat下搭建交叉编译环境的时候,解决了一个问题,觉的这个问题还是有一点意义的,现在将它记录下来。 1、开始进入root下面,把交叉编译压缩包复制到tmp下面...
  • 安装 g+±aarch64-linux-gnu 交叉编译器 $sudo apt install g++-aarch64-linux-gnu #安装 $aarch64-linux-gnu-g++ -v #查看默认安装的gcc版本 $sudo apt install cmake-gui #安装 cmake-gui 有些需要选择性编译的库...
  • CentOS 7 搭建交叉编译环境(上)

    千次阅读 2019-11-20 23:11:39
    前段时间由于工作上的需要,需要编译程序在MIPS架构的终端上运行,于是就学习了一下交叉编译相关的一些知识,并尝试自己搭建交叉编译环境最终编译程序运行OK,现对该学习过程做个总结; 什么是交叉编译 本地编译...
  • 沈阳吉大软件公司的培训教程,在Ubuntu下搭建交叉编译工具链……
  • 如何搭建交叉编译环境

    千次阅读 2013-04-06 17:21:28
    搭建交叉编译环境是一项很繁琐和耗时的工作,查过资料后发现一篇描述很详尽的博客,以power pc为例,转载自 http://blog.sina.com.cn/s/blog_70dd16910100y7vj.html。 第一部分 概述 跟主流的PC软件...
  •  首先简单介绍一下,所谓的搭建交叉编译环境,即安装、配置交叉编译工具链。在该环境下编译出嵌入式Linux系统所需的操作系统、应用程序等,然后再上传到目标机上。  交叉编译工具链是为了编译、链接、处理和调试...
  • 做嵌入式少不了要用交叉...1.如图找到自己安装后的交叉编译环境的路径: 2.打开系统的/etc/bash.bashrc文件。在最后一行写入如下的文字: export PATH=$PATH:/home/william/sunjf/ti_components/os_tools...
  • #在PC上的虚拟机Ubuntu14.04搭建交叉编译环境,安装arm-linux-gcc-4.4.3以及问题解决 通过在PC上的虚拟机Ubuntu14.04搭建交叉编译环境,选择安装交叉编译器arm-linux-gcc-4.4.3,下面是它的安装设置步骤。 第一步...
  • 首先说明为什么需要搭建交叉编译环境。我们知道,我们的开发一般在PC机上,是基于X86架构的,而我们的开发板却是基于ARM架构的。如果在PC主机上编辑编译我们的程序,那编译时按照X86架构来进行的,这样的话编译的二进制...
  • 其实构建树莓派的交叉编译环境和其他的linux-arm开发是一致的,这里比较让人头疼的主要是树莓派内核源码的获取和编译工具的获取。搜了很多博客,大神门都是采用git工具从github上获取linux下的源码、...
  • RK3399学习-搭建交叉编译环境

    千次阅读 2019-09-21 17:27:03
    因此,想借着重新学习卫东山视频的机会,使用rk3399的板子来交叉编译驱动程序。 首先,要达到一个基本的目的,在ubuntu18.04的pc机上,编写出的程序可以在板子上跑的通。 很简单,只要安装交叉编译工具链即可。 ...
  • 实验内容在Linux上编译安装Nachos, 还有搭建交叉编译环境实验环境腾讯云主机 Centos7.0 64位, gcc 4.8.5 Nachos 4.1结果只实现了在centos上编译安装Nachos,没能成功搭建 交叉编译环境 ค(TㅅT)遇到的问题以及...
  • 使用脚本创建交叉编译环境(crosstool-0.43) 使用操作系统ubuntu 9.10,通过crosstool-0.43创建交叉编译环境,成功创建,大概用了两天,在此小做总结。 首先下载bison flex build-essential这些软件,apt-get...
  • zedboard搭建交叉编译环境

    千次阅读 2014-04-01 10:42:58
    参考:... 我安装的LINUX12.04LTS 双系统 下载好交叉编译软件xilinx-2011.09-50-arm-xilinx-linux-gnueabi.bin  ./xilinx-2011.09-50-arm-xilinx-linux-gnueabi.bin
  • 对于需要依赖很多库的跨平台源码编译,交叉编译环境是比较难搭建的,主流的方法有两种,第一是使用已经编译好的交叉编译工具链,比如linaro提供的arm的工具链,这种方法对于编译一般的源码应该是足够了的,但是有些...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 43,696
精华内容 17,478
关键字:

如何搭建交叉编译环境