makefile的基本使用方法,使用bc编译文件的例子-参照任哲的《嵌入式实时操作系统μCOS-II原理及应用-任哲(第3版)》

实验例子文件:(不一定需要,本文有所有内容,在此给出只是为了方便)

makefile的基本使用方法,使用bc编译文件的例子-参照任哲的《嵌入式实时操作系统μCOS-II原理及应用-任哲(第3版)》

学习《嵌入式实时操作系统μCOS-II原理及应用-任哲(第3版)》,其中有许多细节问题没有说明。参照其中的一些实验例子,将makefile的一些基本使用方法总结一下。

以下是一些学习过程,仅供参考:

实验前说明:
此实验为在BorlandC3.1简化版下进行的,需要bc文件,并将bc文件放在E盘根目录下,以及设置环境变量。
某些win8-64位系统可能无法使用make.exe等工具。
一、bc编译文件的实验步骤:
均假设bc文件夹直接放在e盘根目录下,并设置好环境变量e:\bc\bin。
bc文件夹在E盘使用工具bcc.exe的命令为e:\bc\bin\bcc ...
1.按上述例子将文件位置设置好(可修改)。
2.设置环境变量:我的电脑》属性》高级》环境变量,在弹出的对话框中,
  即环境变量对话框下新建PATH变量名,在变量值中增加d:\EnglishSetup\bc\bin
  变量值。(make.exe等所在目录,可以使计算机去该目录下找make程序,不区分大小写)
  (或在已有PATH时添加变量值,分号隔开其他变量值)。
  设置变量的目的是为了可以简化输入命令,不需要每次都用完整路径输入。
3.建立好源文件(可以用记事本或文本文档等其他编辑工具)(最好放置在规范的目录下)
4.打开DOS窗口(命令行环境)(Win+F后搜cmd,即开始,运行cmd)。
  用命令行命令,进入源文件所在的文件目录(重要)。
 (cmd命令行中的DOS命令不区分大小写,但是命令的指针或者参数 是要区分大小写的)
5.使用相应的命令对源文件进行编译或连接。
6.生成相应的.obj或.exe文件。
7.例子:以下请注意命令中的空格和tab键
(注意cmd命令行窗口进入某个文件夹等常用的命令E:,cd,cd\或dir等,具体方法请百度)

如有源文件test.c

//test.c代码

#include<stdio.h>

void main(void)
{
printf("Hello,world!\n");
}
a.首先cmd进入要编译的文件目录路径,其次采用命令行命令编译自己的文件:
  编译命令为:(注意空格)
bcc -c -ml -Ie:\bc\include -Le:\bc\lib test.c 
  (注意-要紧跟着后面的选项字符(字母))
注意:其中的e:\bc\include和e:\bc\lib是include文件和lib文件所在的路径
  该命令用源文件test.c生成test.obj文件。
b.将目标文件连接成可执行文件:需要连接
  c0l.obj(c零L.obj,为启动模块)和test.obj。使用tlink.exe进行连接:
  (具体的文件名参照bc中各文件夹下的文件名称)
  在cmd中输入的连接命令为:
tlink e:\bc\lib\c0l.obj test.obj,test,test,e:\bc\lib\cl.lib
  连接后产生test.exe可执行文件。
由于test.c产生的test.exe可能使命令行窗口只是闪一下,故追加了一个hello.c的例子

具体方法类似上述内容,只是将‘test’改为‘hello’。

//hello.c代码

#include<stdio.h>

#include<stdlib.h>
void main(void)
{
int i;
i=20;
printf("Hello,world!\n");
printf("i=%d\n",i);

system("pause");//调试时暂停程序
}
需要按照要求输入命令即可,其中的命令改为:
bcc -c -ml -Ie:\bc\include -Le:\bc\lib hello.c 

tlink e:\bc\lib\c0l.obj test.obj,hello,hello,e:\bc\lib\cl.lib


二、makefile的简单实验:

说明:
使用前最好将文件放在较浅的路径目录下,以便cmd命令尽可能短。
先建立一个名叫makefile.mak的文件(特别注意后缀,可以使用txt写入内容后修改后缀)
makefile.mak文件的内容:
##生成11和22后将其删除##(#表示注释)
target1:
md 11
target2:
md 22
target3:
rd 11
rd 22
###

cmd窗口命令行进入makefile.mak所在目录,
第一次运行输入make后按回车
上述代码在当前文件夹下生成名叫11的文件夹(执行第一段代码)
第二次键入:make target2
上述代码在当前文件夹下生成名叫22的文件夹(执行第二段代码)
第三次键入:make target3

上述代码将刚建立的11和22两个目录删除(执行第三段代码)

三、makefile编译多个文件实验

1.全部文件为pa.c,pa.h,pb.c,pb.h,test.c(及附带文件makefile.mak和testlink.txt)
  以下假设bc文件夹直接放在e盘根目录下,并设置好环境变量e:\bc\bin。
  且上述文件放在test文件夹下。使用前最好将test文件夹放在较浅的目录下。
2.单步输入cmd命令行方法如下:(注意命令中的空格)
  若bc文件夹直接放在e盘根目录下,设置好环境变量e:\bc\bin后,
  cmd进入上述五个文件所在的目录test后依次输入的指令为:
bcc -c -ml -Ie:\bc\include -I.\ -Le:\bc\lib pa.c
bcc -c -ml -Ie:\bc\include -I.\ -Le:\bc\lib pb.c
bcc -c -ml -Ie:\bc\include -I.\ -Le:\bc\lib test.c
  (多了'-I.\'。应该是由于多了自己建立的头文件)
  依次生成pa.obj,pb.obj,test.obj文件。
  cmd输入连接命令:
tlink e:\bc\lib\c0l.obj pa.obj pb.obj test.obj,test,test,e:\bc\lib\cl.lib
  该实验中最后生成名为test.exe的程序。
  (若使用了printf()函数输出中文,中文部分可能会出现为乱码)
3.(1)使用makefile.mak及make命令方法如下:
使用makefile.mak及make命令来编译(pa.c,pa.h,pb.c,pb.h,test.c)生成test.exe

makefile.mak文件代码(内容)可为:(#为注释

(需要先建立连接文件testlink.txt,且要注意以下的空格与tab键。‘:’后有空格,命令前有tab键

#################################################
#               创建可执行文件(exe)
TEST.EXE:
TLINK @TESTLINK.txt
#################################################
#               创建各个目标文件(obj)
PA.OBJ:
bcc -c -ml -Ie:\bc\include -Le:\bc\lib pa.c
PB.OBJ:
bcc -c -ml -Ie:\bc\include -Le:\bc\lib pb.c
TEST.OBJ:
bcc -c -ml -Ie:\bc\include -Le:\bc\lib test.c

#################################################
需要键入的cmd命令行命令依次为:
make pa.obj
make pb.obj
make test.obj
make
(由于上述采用文件名作为标号,即目标,故make后面输入的可以是文件名)
注意需要建立一个叫testlink.txt的连接文件,并将需要连接的文件按格式要求写入其中。
testlink.txt的内容为:
e:\bc\lib\c0l.obj pa.obj pb.obj test.obj
test
test
e:\bc\lib\cl.lib

(2)上述操作需要输入的make命令太多,若采用命令集形式,只需要输入一次make即可
形式为:
目标: 生成目标所需要的文件名(依赖文件,其实是转移语句标号)
命令集
相当于生成目标的条件不满足时,程序执行将发生转移,转移的目标是以依赖文件名为标号或目标的程序段。
(注意命令集前面有tab键、冒号':'后有空格。)

makefile.mak文件代码(内容)可为:(注意空格与tab键‘:’后有空格,且每个命令前有tab键)
#################################################           
TEST.EXE: PA.OBJ PB.OBJ TEST.OBJ
TLINK @TESTLINK.TXT
PA.OBJ:
bcc -c -ml -Ie:\bc\include -Le:\bc\lib pa.c
PB.OBJ:
bcc -c -ml -Ie:\bc\include -Le:\bc\lib pb.c
TEST.OBJ:
bcc -c -ml -Ie:\bc\include -Le:\bc\lib test.c

#################################################
需要键入的cmd命令为:make

(3)规范完整的makefile.mak文件代码(内容)为:
(凡是以目标为标号的程序段都要写上目标的依赖)
#################################################           
TEST.EXE: PA.OBJ PB.OBJ TEST.OBJ
TLINK @TESTLINK.TXT
PA.OBJ: PA.C PA.H
bcc -c -ml -Ie:\bc\include -Le:\bc\lib pa.c
PB.OBJ: PB.C PB.H
bcc -c -ml -Ie:\bc\include -Le:\bc\lib pb.c
TEST.OBJ: TEST.C
bcc -c -ml -Ie:\bc\include -Le:\bc\lib test.c

#################################################

需要键入的cmd命令同样为:make

希望能帮到大家。

猜你喜欢

转载自blog.csdn.net/liuxhCSDN/article/details/79928204