Ubuntu 交叉编译国产开发板香橙派的环境配置

Posted 编程圈子

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Ubuntu 交叉编译国产开发板香橙派的环境配置相关的知识,希望对你有一定的参考价值。

Ubuntu 交叉编译国产开发板香橙派的环境配置

一、目的

在Ubuntu上编译香橙派运行的c/c++程序。
目前普遍使用的工具链下载地址:
http://releases.linaro.org/components/toolchain/binaries/

二、准备工具

  • 香橙派开发板
  • Ubuntu 14 x86

三、操作步骤

1. ubuntu安装交叉编译工具

sudo apt-get install gcc-arm-linux-gnueabi
sudo apt-get install g++-arm-linux-gnueabi
# 如果硬件带浮点模块,后面再加上 hf,如 gcc-arm-linux-gnueabihf

安装后输入 :

arm-linux-gnueabi

按tab,可以看到自动补全的命令列表。

2. 建一个demo程序 a.c

#include <stdio.h>

int main()
    printf("Hello");
    return 0;

3. 编译

arm-linux-gnueabi-gcc test.c -o a

4. 检查文件信息

# 查看文件是否输出为arm架构
> file a
a: ELF 32-bit LSB  executable, ARM, EABI5 version 1 (SYSV), dynamically linked (uses shared libs), for GNU/Linux 2.6.32, BuildID[sha1]=8efe9016795007bcfa5f72b1b8f0e828300b95af, not stripped


四、开发板上设置

1. 检查环境

# 首先直接运行Ubuntu上编译的 a ,报错
> a
bash: ./a: No such file or directory

# 打印依赖共享库
> ldd  a
不是动态可执行文件

# 查看该程序的加载程序
> readelf  -l  a  | grep interpreter  
[Requesting program interpreter: /lib/ld-linux.so.3]
# 注意在arm也要有这个文件

# 执行下面程序查看ld-linux.so.3是否存在,如果不存在则在开发板安装 gcc-arm-linux-gnueabihf,g++-arm-linux-gnueabihf

> ls /lib/ld-linux.so.3
lrwxrwxrwx 1 root root 40 Mar 25 01:43 /lib/ld-linux.so.3 -> /usr/arm-linux-gnueabi/lib/ld-linux.so.3

如果软链接地址不正确,则手动调整。

2. 动态库处理

# 再次运行程序
> ./a
提示: 
./a: error while loading shared libraries: libc.so.6: cannot open shared object file: No such file or directory
# 运行命令查看
> ldconfig  -p  | grep libc.so.6
        libc.so.6 (libc6,hard-float, OS ABI: Linux 3.2.0) => /lib/arm-linux-gnueabihf/libc.so.6
# 显示结果libc.so.6存在,猜测可能运行程序时找不到这个路径 
# 由于 /usr/arm-linux-agnueabihf/lib下有libc.so.6,故把这个目录添加到环境变量
# 这里带了香橙派编译gpu的部分路径,可按需求删除,留最后一段 /usr/arm-linux-gnueabi/lib/ 即可
export LD_LIBRARY_PATH=/home/orangepi/CedarX/arm-linux-gnueabi:/home/orangepi/CedarX/output/lib:/home/orangepi/CedarX/linuxgnueabi_3.10:/usr/arm-linux-gnueabi/lib/
# 再次运行程序,成功输出
> ./a
Hello

以上是关于Ubuntu 交叉编译国产开发板香橙派的环境配置的主要内容,如果未能解决你的问题,请参考以下文章

香橙派能装树莓派系统吗

Linux系统移植 ------搭建交叉编译环境

如何配置 uboot

如何配置 uboot

ubuntu 交叉编译 armv7_32 ffmpeg x264(已完成)

ok6410[001] Ubuntu 16.04[64bit]嵌入式交叉编译环境arm-linux-gcc搭建过程图解