Chinaunix首页 | 论坛 | 博客
  • 博客访问: 4247539
  • 博文数量: 776
  • 博客积分: 13014
  • 博客等级: 上将
  • 技术积分: 10391
  • 用 户 组: 普通用户
  • 注册时间: 2010-02-22 17:00
文章分类

全部博文(776)

文章存档

2015年(55)

2014年(43)

2013年(147)

2012年(20)

2011年(82)

2010年(429)

分类: C/C++

2010-02-23 12:54:33

Turbo C分步使用,及TC下的Makefile文件【转载】

(2009-12-28 16:15:30)
标签:

makefile

turbo

c

it

分类:编程
Turbo C分步使用,及TC下的Makefile文件【原】
2009-12-27 15:29

大学时就使用的TurboC,现在变得很陌生了,但是今天的使用让我有了新的体会。以前都是用当个C文件做东西,今天要在TurboC下使用包含.h和.c的文件时遇到了不少的麻烦。后来发现需要在TurboC中引用一个project文件。比如要编译以下三个文件:

test.h:

#include
void my(char* p);

test.c:

#include "test.h"

void my(char* p){

printf("In my function, you say:%s",p);

}

testMain.c

#include
#include "test.h"

void main(){

my("hello world");

}

首先不要编写一个test.prj,内容如下:

test.c
testmain.c

然后在TurboC的Project菜单中设置Project name为test.prj(以上四个文件都与TC2的主文件在相同目录中),然后在使用crtl+f9运行编译才可以。

--------------------------------------------------------------------------------------------------------

以前就挺说要学C编程首先要自己搞明白编译器是怎样工作的,首先它要把你的C文件编译成.obj文件,再用连接器把.obj连接生成exe文件。

在TurboC中提供了TCC.exe 和tlink.exe两个文件分别完成。

以上面的三个文件为例(我的TC安装目录在E:\TC2)

1 编译源文件

tcc -IE:\TC2\include -LE:\tc2\lib -c test.c (如果源文件在TC目录中用:tcc -Iinclude -Llib -c test.c)
tcc -IE:\TC2\include -LE:\tc2\lib -c testmain.c test.obj

参数-I和参数-L分别告诉TCC include文件和lib文件位置。

2 连接文件

   tlink e:\tc2\lib\c0s testmain test,TESTexe,,e:\tc2\lib\cs

   c0s表示编译器使用的内存模式,此文件必须放在第一个;

   testmain和test是第一步中编译生成的.obj文件,在这里可以直接使用文件名而忽略扩展名

   testexe文件就是连接后生成的可执行文件的文件名,这个可以自己随便写。

经过以上两个步骤,可执行文件就生成了。

----------------------------------------------------------------------------------

还有一种方法就是自己写makefile文件,然后把源文件、makefile文件,make.exe等文件放到同一个目录下,运行make.exe命令,一并编译(以下格式中冒号后面有一个空格,而且tcc前面可以使空格也可以使tab)

makefile文件内容:

testMain: testMain.obj test.obj
tlink e:\tc2\lib\c0s testmain test,TESTexe,,e:\tc2\lib\cs
testMain.obj: testmain.c test.h
tcc -IE:\TC2\include -LE:\tc2\lib -c testmain.c
test.obj: test.c test.h
tcc -IE:\TC2\include -LE:\tc2\lib -c test.c

 

下面是tc中makefile的例子  
  假设项目中有三个文件main.c、support.c、support.h,则Makefile可以这么写:    
  代码:    
   
  all   :   mygame      
  mygame   :   main.o   support.o      
                  tcc   -o   mygame   main.o   support.o      
  support.o   :   support.c   support.h      
                  tcc   -c   support.c      
  main.o   :   main.c      
                  tcc   -c   main.c      
     
   
   
  注意tcc前的分隔符要用tab

 

这里是全自动Makefile的例子,在Linux下运行良好,我没试过tc下能不能正常使用。    
   
  代码:    
   
  EXENAME   =   mygame      
  CC   =   tcc      
  CFLAGS   =   -O2      
  INCLUDE   =      
  LIBS   =      
  HEADER   =      
  OBJS   =   main.o   support.o      
       
  all:   $(EXENAME)      
       
  .c.o:      
                  $(CC)   -c   $(CFLAGS)   $(INCLUDE)   $<    
   
  $(EXENAME):   $(OBJS)    
                  $(CC)   -o   $(EXENAME)   $(OBJS)   $(LIBS)    
     
   
   
  就算项目中有再多的文件,也只需在“OBJS   =   ”一行再写入filename.o就可以了。

 

参考:

阅读(2927) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~