GEC68818开发日记01 --- 交叉编译环境配置

什么是交叉编译

        原本使用 gcc 使用编译器, 用来把我们写的 C语言程序文件翻译成对应平台(X86)可以识别的二进制编码。
        因此我们需要在电脑中编译一个开发板能识别的二进制编码,这个编译过程就称为交叉编译,从 X86平台编译出来ARM平台的可执行文件。使用的工具就是 arm-linux-XXXXXX。其中一个工具为 arm-linux-gcc 用来交叉编译出C的可执行文件。

安装工具链

  1. 下载工具链:链接
  2. 通过共享目录,将文件解压到根目录
    sudo tar -Jxvf arm-linux-gnueabi-5.4.0.tar.xz -C /
  3. /usr/local/ 下创建一个新的目录 arm
    sudo mkdir /usr/local/arm
  4. 给目录释放全部的权限
    sudo chmod 777 /usr/local/arm
  5. 将解压后的文件夹 gcc-4.6.4 复制到 /usr/local/arm
    sudo cp -r ***/arm /usr/local/arm
    arm
  6. 添加编译器环境变量,让所有位置都可以使用该交叉编译器
vim  ~/.bashrc
在最后面添加:
export PATH=/usr/local/arm/5.4.0/usr/bin:$PATH
  1. 检查配置是否成功
source  ~/.bashrc   // 从新生效配置文件(环境变量)
arm-linux-gcc -v  // 查看版本信息

检查配置是否成功

  1. 交叉编译器的用法
  • 与普通 gcc 的用法几乎没有区别,只是将 gcc 换成 arm-linux-gcc
  • gcc 编译的文件为 x86 格式
  • arm-linux-gcc 编译的文件格式为 ARM 文件
  • 编译后只需要把生成的可执行文件传入开发板即可,除非需要用到资源文件(图像、视频、音乐……)
  • 在开发板遇到执行错误的情况,先检查是否有给予 可执行 的权限。
  1. 使用 arm-linux-gcc 出现以下问题:
arm-linux-gcc Output.c -o Output.o
/usr/local/arm/5.4.0/usr/bin/../libexec/gcc/arm-none-linux-gnueabi/5.4.0/cc1: 
error while loading shared libraries: libmpfr.so.4: 
cannot open shared object file: No such file or directory

        原因是系统中使用的是 so.6 的库,但是我们编译用的是 so.4。
        解决办法:把 so.6 做成一个连接文件为 so.4 即可。

$sudo ln -s /usr/lib/x86_64-linux-gnu/libmpfr.so.6 /usr/lib/x86_64-linux-gnu/libmpfr.so.4

猜你喜欢

转载自blog.csdn.net/mumuynsi/article/details/127775587