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系统,截图如下