姓名:王芷若 学号:19020100180
学院:电子工程学院
转载自:https://blog.csdn.net/weixin_44039347/article/details/91606727?utm_source=app&app_version=4.13.0&code=app_1562916241&uLinkId=usr1mkqgl919blen
【嵌牛导读】:本篇文章整理Linux知识点—arm-Linux嵌入式开发环境。
【嵌牛鼻子】:交叉开发模式,开发工具用法
【嵌牛提问】:Linux嵌入式开发环境是什么模式?编译工具链与交叉编译工具链有何异同?
【嵌牛内容】
ARM-LINUX嵌入式开发环境
一、交叉开发模式
1、组成结构
(1)宿主机:开发主机,一般由PC、发行版linux系统、开发工具(本地及交叉编译)(代码编辑器Vi,编译器GCC、调试器GDB、工程管理器MAKE、NFS等)组成;
(2)目标机:嵌入式系统,一般由ARM硬件、BOOTLOADER、内核、根文件系统构成;
(3)连接工具:串口线、网线、USB线等。
2、理解编译工具链与交叉编译工具链的异同
(1)相同点:
① 用于支持的语言的编译、链接与调试,编译器用法相同;
② 通常都有编译器、链接器、调试器、库及其他二进制工具构成。
(2)不同点:
① 编译工具链一般用于本机编译、本机执行的开发模式;
② 交叉编译工具链用于宿主机编译,目标机运行的交叉开发模式;
③ 编译器一般Linux发行版都配备,直接调用gcc命令即可;
④ 交叉编译器一般需根据宿主机软硬件环境,进行gcc、相关库、工具进行有针对性的定制。
⑤ 实验室使用的OK6410开发板定制的编译器为32位的,其交叉编译工具链主要arm-linux-gcc,arm-linux-g++arm-linux-gdb等构成。
二、开发工具的用法
1、Vi的工作模式及其切换-掌握使用Vi完成源代码编辑、保存及退出的常见按键操作;
2、GCC:GNU Compiler Collection,GUN编译器套件,特点:
① 支持绝大多数高级语言的编译,既支持传统的C/C++,Fortan,Objective-C ,也支持java,python,go等语言;
② 支持汇编语言;
③ 支持绝大多数的主流处理器平台;
④ 便于构建交叉编译工具链。
3、gcc/arm-linux-gcc用法:
① 基本用法:gcc hello.c;arm-linux-gcc hello.c;输出a.out
② 推荐用法:gcc hello.c -o hello/arm-linux-gcc hello.c -o hello ,可以指定输出文件名称;
③ 主要的编译参数
-Wall 打印全部警告信息;
-O{0-3,s} 支持代码优化,0无优化;
-g 支持gdb调试;
-lpthread 支持多线程。
4、make及Makefile
(1)make:工程管理器,利用执行Makefile文件实现工程管理(编译、链接、生成工程镜像、安装、清理、卸载等);
(2)make用法:编写Makefile,在终端下执行make命令即可。
(3)Makefile文件编写示例:
一个工程,2个源文件testa.c ,testb.c,一个头文件testb.h,编译器为arm-linux-gcc,生成的可执行文件为test,需支持代码优化、打印警告信息,支持gdb调试等编译选项,其Makefile文件如下:
SRC=testa.testb b.c testb.h
EXEC=test
CC=arm-linux-gcc
CFLAGS=-Wall -O2 -g
( E X E C ) : (EXEC):(EXEC):(SRC)
$(CC) $(SRC) -o $(EXEC) $(CFLAGS)