CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
英特尔®游戏设计大赛100美元现金周周送 专题改版:Java Web 专题
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  Linux/Unix社区 >  程序开发区

怎样在linux下用makefile

楼主yuzisun(yuzi)2003-11-04 17:43:28 在 Linux/Unix社区 / 程序开发区 提问

程序里必须有至少两个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

相关问题

  • Linux下怎样用优盘
  • 怎样用linux/adsl上网?
  • linux redhat7.3 怎样使用samba
  • Linux的Makefile新手求助!
  • 怎样写makefile文件
  • linux 使用 oracle 怎样控制光标?
  • 请问在Linux下怎样使用OICQ
  • 在linux下怎样使用pcanywhere?
  • 怎样用软盘启动Linux?
  • Linux的makefile文件中如何引用其他目录县面的头文件

关键词

  • 文件
  • 执行
  • mx
  • matrix
  • 源程序
  • makefile
  • 程序
  • 名字
  • allocate
  • malloc

得分解答快速导航

  • 帖主:yuzisun

相关链接

  • CSDN Blog
  • 技术文档
  • 代码下载
  • 第二书店
  • 读书频道

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
世纪乐知(北京)网络技术有限公司 版权所有, 京 ICP 证 020026 号
北京创新乐知广告有限公司 提供技术支持
Copyright © 2000-2007, CSDN.NET, All Rights Reserved
GongshangLogo