GCC的makefile例程

首先需要四个文件,makefile是必须的。。。然后还要main.c和test.c,test.h

makefile文件内容如下:

main:libmyl.a main.c  /*利用静态库生成可执行文件*/ 
 gcc -o main main.c -L. -lmyl/*命令*/
libmyl.a:test.o    //
 ar -crv libmyl.a test.o
 ranlib libmyl.a
test.o:test.c
 cc -c test.c


据说静态链接库是将函数封装到一个文件中,虽然程序会比较大,通过这种方式却可以增加程序的可移植性。毕竟不同版本的操作系统自带的函数库还是有区别的。makefile文件的第一行是生成的目标程序,也就是main.o,第二行是形成程序的命令。第三行是生成静态链接库。这个静态链接库是由test.o生成的。

还需要注意的事情是,命令行的是需要空格的。。但是不是用space空格,而是按Tab键空格。

test.c:

#include<stdio.h>
void func1()
{
int i,j=0;
for(i=1;i<11;++i)
{
        j+=i;
}
printf("1-10之和为:%d",j);
}

void func()
{
       long      x=1;
       long     y=2;
       printf("计算2 5 8 11 14  的积");
       while (y<= 14)
{x=y*x;
y=y+3;
}
printf("是%ld",x);

}

其实你可以发现,test.c文件存放的是函数解释。通过这种分离,便实现了C程序的模块化。

 

 

test.h:

void func1();
void func();

 

个人觉得其实这里的头文件只是模块处理的产物,里面只是放了声明,如果你不想再弄个头文件,可以直接在main.c中写出函数声明。

 

 

 

 

main.c: 

#include<stdio.h>
#include"test.h"

main()
{

 char choice;
 printf("1. 1到10的和   2.求2,5,8,10,14之积; 3.Q退出\n");
 printf("请输入");
 scanf("%c",&choice);
 switch(choice)
 {
  case '1':
   func1();
   break;
  case '2':
          
   func();
   break;
  case 'Q': case 'q':
   return;
 }
}

 

此时程序的书写工作基本完成了。剩下的就是编译了。我是用的ubantu系统,截图如下

 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值