怎样在linux下用makefile
程序里必须有至少两个C源程序文件和一个makefile文件。一个源程序文件含
main,另一个含以下4个函数:allocate_matrix, read_matrix,transpose_matrix,
print_matrix 。
最后生成的可执行文件的名字必须叫mx。检查程序时,只运行make,然后是指定名字的可执行文件mx
#include "stdio.h"
#include "stdlib.h"
#include "malloc.h"
int ** allocate_matrix(int m,int n)
{
int i;
int **a=(int **)malloc(m*sizeof(int));
for(i=0;i<m;i++)
a[i]=(int *)malloc(n*sizeof(int));
return a;
}
void read_matrix(int **a,int m,int n)
{
int i,j;
for( i=0;i<m;i++)
{
for( j=0;j<n;j++)
{
scanf("%d",&a[i][j]);
}
}
}
void transpose_matrix(int **a,int **b,int m,int n)
{
int i,j;
for( i=0;i<n;i++)
{
for( j=0;j<m;j++)
{
b[i][j]=a[j][i];
}
}
}
void print_matrix(int **a,int m,int n)
{
int i,j;
for( i=0;i<m;i++)
{
for( j=0;j<n;j++)
{
printf("%d\t",a[i][j]);
}
printf("\n");
}
}
int main()
{
int **a,**b,m,n;
printf("input row and column\n");
scanf("%d,%d",&m,&n);
printf("start allocate the matrix.......\n");
a=allocate_matrix(m,n);
printf("please input the matrix values\n");
read_matrix(a,m,n);
printf("start allocate the transposed matrix......\n");
b=allocate_matrix(n,m);
printf("end allocate\n");
printf("original matrix\n");
print_matrix(a,m,n);
transpose_matrix(a,b,m,n);
printf("transposed matrix\n");
print_matrix(b,n,m);
return 0;
}
问题点数:0、回复次数:7Top
1 楼tigermaomaolaoliu()回复于 2003-11-04 18:44:48 得分 0
找个例子Makefile,自己改一下就行了!
当然得熟悉Makefile问件一些固定约定Top
2 楼liben(晨曦)回复于 2003-11-10 21:35:49 得分 0
expmake : class.o main.o
g++ -o expmake class.o main.o
class.o : class.h class.cpp
gcc -c class.h class.cpp
main.o : class.h main.cpp
gcc -c class.h main.cpp
clean: rm expmake *.o
以上是例子,
输出可执行文件是 expmake
如 extern int ** allocate_matrix(int ,int );
你的程序里在一个文件里使用另一个文件的函数要声明Top
3 楼Phourm()回复于 2003-11-11 09:11:02 得分 0
MarkTop
4 楼acqy(Just Programmer)回复于 2003-11-11 09:29:34 得分 0
你可以去看看autoconf和autoscan的例子,它可以帮你生成与机器配置相关的MAKEFILE文件,这样可以让自己的程序通用性更加强些。Top
5 楼cablist(cablist)回复于 2003-11-11 10:53:39 得分 0
你去这里看看吧!
http://www.cngnu.org/technology/d416b6566696c656.html
Top
6 楼hecCIBN()回复于 2003-11-11 15:11:20 得分 0
在Makefile中也#开始的行都是注释行.Makefile中最重要的是描述文件的依赖关系的说明.一般的格式是:
target: components
TAB rule
第一行表示的是依赖关系.第二行是规则.
例如:
Top
7 楼hecCIBN()回复于 2003-11-11 18:20:52 得分 0
上面的TAB就是tab键。
有个工程,有这几个文件:main.c,mytool1.h,mytool1.c,mytool2.h,mytool2.c,
再写Makefile文件的时候,就可以写成:
main:main.o mytool1.o mytool2.o
gcc -o main main.o mytool1.o mytool2.o
main.o:main.c mytool1.h mytool2.h
gcc -c main.c
mytool1.o:mytool1.c mytool1.h
gcc -c mytool1.c
mytool2.o:mytool2.c mytool2.h
gcc -c mytool2.cTop




