makefile의 기본 사용법, bc를 사용하여 파일을 컴파일하는 예 - Ren Zhe의 "Embedded Real-time Operating System μCOS-II - Ren Zhe(3판)의 원리 및 응용"을 참조하십시오.

실험 예제 파일: (꼭 필요한 것은 아닙니다. 이 문서에는 모든 내용이 포함되어 있으며 편의상 여기에만 제공됩니다.)

makefile의 기본 사용법, bc를 사용하여 파일을 컴파일하는 예 - Ren Zhe의 "Embedded Real-time Operating System μCOS-II - Ren Zhe(3판)의 원리 및 응용"을 참조하십시오.

"임베디드 실시간 운영 체제 μCOS-II - Ren Zhe(3판)의 원리 및 응용"을 연구하면 설명되지 않은 세부 사항이 많이 있습니다. 몇 가지 실험적 예를 참조하여 makefile을 사용하는 몇 가지 기본 방법을 요약합니다.

다음은 참고용으로만 제공되는 학습 과정입니다.

실험 전 주의사항:
본 실험은 Borland C3.1 단순화 버전에서 진행되었으며, bc 파일이 필요하며, E 드라이브의 루트 디렉터리에 bc 파일을 넣고 환경변수를 설정합니다.
일부 win8-64비트 시스템에서는 make.exe와 같은 도구를 사용하지 못할 수도 있습니다.
1. 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+ 이후 cmd 검색) F를 시작하려면 cmd를 실행하세요.)
  명령줄 명령을 사용하여 소스 파일이 있는 파일 디렉터리를 입력합니다(중요).
 (cmd 명령줄의 DOS 명령은 대소문자를 구분하지 않지만 명령의 포인터나 매개변수는 대소문자를 구분합니다.)
5. 해당 명령을 사용하여 소스 파일을 컴파일하거나 연결합니다.
6. 해당 .obj 또는 .exe 파일을 생성합니다.
7. 예: 다음 명령에서 공백과 탭 키에 주의하세요.
(cmd 명령줄 창은 특정 폴더와 일반적으로 사용되는 기타 명령인 E:, cd, cd\ 또는 dir 등을 입력합니다. 구체적인 방법은 Baidu를 참조하세요)

예를 들어 소스 파일 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는 포함 파일과 lib 파일이 있는 경로입니다.
  이 명령은 소스 파일 test.c를 사용하여 test.obj 파일을 생성합니다.   b. 대상 파일을 실행 파일에 연결합니다. c0l.obj(시작 모듈인 c0L.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