嵌入式--了解嵌入式Linux的工具链,掌握基于Linux的C程序设计

1. 学习GCC的使用和Makefile的编写

(1)在使用GCC编译程序时,编译过程可以被细分为四个阶段:

预处理(Pre-Processing)

编译(Compiling)

汇编(Assembling)

链接(Linking)

(2)简述Gcc的常用选项

-w 关闭所有警告设置

-Wall 允许发出所有警告

-werror 把所有警告转化为错误

-v 显示编译过程中的每一步用到的命令

-ggdb 在可执行程序中包含大量的调试信息

-MM 输出一个make兼容的相关列表

-O 优化编译过的代码

-fsyntax-only 只检查语法,其他都不做

-save-temps 保存编译过程中产生的中间文件

-Q 编译器输出编译每个函数时所花的时间信息

2.简述Makefile编写规则,举例说明

(1)Makefile的编写规则

1)在一个linux Makefile中通常包含下面内容:

1、需要由make工具创建的目标体(target),通常是目标文件或可执行文件。

2、要创建的目标体所依赖的文件(dependency_file)。

3、创建每个目标体时需要运行的命令(command)。

2)格式如下:

target:dependency_files

command

target:规则的目标。通常是程序中间或者最后需要生成的文件名,可以是.o文件、也可以是最后的可执行程序的文件名。

dependency_files:规则的依赖。生成规则目标所需要的 文件名列表。通常一个目标依赖于一个或者多个文件。

command:规则的命令行。是make程序所有执行的动作(任意的shell命令或者可在shell下执行的程序)一个规则可以有多个命令 行,每一条命令占一行。  在Makefile中“规则”就是描述在什么情况下、如何重建规则的目标文件,通常规则中包括了目标的依赖关系(目标的依赖文件)和重建目标的 命令。make执行重建目标的命令,来创建或者重建规则的目标(此目标文件也可以是触发这个规则的上一个规则中的依赖文件)。规则包含了目标和依赖的关系 以及更新目标所要求的命令。

(2)举例说明

建立main.c ,mytool1.c , mytool2.c ,mytool1.h ,mytool2.h五个文件,编写makefie文件

1)main.c

#include<mytool1.h>

#include<mytool2.h>

int main(int argc,char **argv)

{

mytool1_print("hello");

mytool2_print("nihao");

}

 

2)Makefile(注意Tab键)

main:main.o mytool1.o mytool2.o

gcc -o main main.o mytool1.o mytool2.o

main.o:main.c mytool1.h mytool2.h

gcc -c main.c -I.

mytool1.o:mytool1.c mytool1.h

gcc -c mytool1.c -I.

mytool2.o:mytool2.c mytool2.h

gcc -c mytool2.c -I.

3)mytool1.c

#include<stdio.h>

void mytool1_print(char *print_str)

{

printf("This is mytool1 print %s\n",print_str);

}

 

4)mytool2.c

#include<stdio.h>

void mytool2_print(char *print_str)

{

printf("This is mytool2 print %s\n",print_str);

}

 

5)mytool1.h

#ifndef _MYTOOL_1_H

#define _MYTOOL_1_H

void mytool1_print(char *print_str);

#endif

 

6)mytool2.h

#ifndef _MYTOOL_2_H

#define _MYTOOL_2_H

void mytool2_print(char *print_str);

#endif

 

将这几个放在一个文件夹中,在终端中进入到该文件夹,执行make命令

然后执行./main运行出结果

 

查看当前文件夹下的东西:

在目录E下创建一个文件夹m1,将mytool2.h,mytool1.c移到该文件夹中

 

将目录E下的.o文件和main删除:

 

再次使用make命令后出现错误,更改和mytool1.c和mytool2.h相关的路径

更改后重新执行make

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值