基础知识:
- 交叉编译:在一个平台上生成另一个平台上的可执行代码,例如本篇在Linux上编译arm平台应用;
- 静态编译:编译器在编译可执行文件的时候,将可执行文件需要调用的对应 静态库 (.a或.lib)中的部分提取出来,链接到可执行文件中去,使可执行文件在运行的时候不依赖于动态链接库;
交叉编译环境:
gcc 安装:
- gcc下载地址(版本选择开发板供应商会提供):1. https://releases.linaro.org/components/toolchain/gcc-linaro/
- 解压后,放到任意路径下,如 /opt/下,并将路径(例如下边地址)加入/etc/profile文件最后:
export PATH=$PATH:/opt/arm/gcc-6.5.0/bin
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/opt/arm/gcc-6.5.0/lib
- 执行source命令时环境变量生效:
source /etc/profile
- 执行,返回版本信息
arm-linux-gnueabihf-gcc -v
编译环境测试
- 生成hello.c文件,文件包含以下文本:
#include <stdio.h>
int main(){
printf("hello world");
return 0;
}
- 运行编译命令,生成a.out文件
arm-linux-gnueabihf-gcc -Wall hello.c
- 通过scp将a.out拷贝到arm开发板
- 在开发板上运行./a.out,打印"hello world"即为成功。
参考: