当前位置:  技术问答>linux和unix

makefile中小C程序

    来源: 互联网  发布时间:2016-10-08

    本文导语:  1楼 代码: //first.c #include #include"second.c" int main(){ printf("Fighting") ; printWords() ; } //second.c #include void printWords(){     printf("The second file") ; } //Makefile文件 first:first.o second.o      gcc   first.o second.o -o first first.o:fi...

1楼

代码:
//first.c
#include
#include"second.c"
int main(){
printf("Fighting") ;
printWords() ;
}
//second.c
#include
void printWords(){
    printf("The second file") ;
}
//Makefile文件
first:first.o second.o
     gcc   first.o second.o -o first
first.o:first.c
    gcc   -c first.c -o first.o
second.o:second.c
    gcc   -c second.c -o second.o
编译之后出错,但是将second.c中的函数和first.c中的函数调用删掉后就成功 
Why??

|
一般不推荐使用include "second.c"这样的写法.
include是预编译指令,直接将后面的文件插入到当前文件中.这样first.o中已经包含函数printWords.
second.o里面也有printWords,于是连接生成可执行文件的时候就会出现重定义的错误.
Makefile写成
first:first.o
  gcc first.o -o first
first.o:first.c
  gcc -c first.c -o first.o
就好了,由于使用了include "second.c", second.c不需要编译,也不需要连接

|

可以生成second.o,加-c 命令就可以,
memoleak 说的很对,主要是你的头文件包含了之后已经定义过了(声明加定义),你的second.o文件就多余了,如果你真的要用,就改成下面的形式。只加一个声明就可以了
//first.c
#include
void printWords();
int main(){
printf("Fighting") ;
printWords() ;
}
//second.c
#include
void printWords(){
  printf("The second file") ;
}
//Makefile文件
first:first.o second.o
  gcc first.o second.o -o first
first.o:first.c
  gcc -c first.c -o first.o
second.o:second.c
  gcc -c second.c -o second.o

|
second.o:second.c
  gcc -c second.c -o second.o
编译肯定出错的,生成不了second.o

|
同意memoleak 和punchio,second.c就是一个函数,生成不了second.o!

    
 
 

您可能感兴趣的文章:

  • 从网上载了个C++程序的源代码,包含38个.cpp和.h,还有makefile.in和makefile.am两个文件,但无configure和makefile.请问怎么编译?谢谢!
  • 【急!】一个程序里有好多文件夹里都有Makefile,如何找到最管用的makefile
  • 自己编写一个程序编译进内核,要修改makefile文件吗?
  • Makefile,如何传递宏定义DEBUG?以便于程序编译或者跳过程序中#ifdef DEBUG中间的代码段?
  • 请问我写的程序如何制作makefile
  • 急!请问大虾,如何书写UNXI下的MakeFile以编译C(调用了某些库)程序?
  • shell脚本程序,有没有必要写makefile
  • 跪求该程序的Makefile文件
  • QT程序通过Qmake生成的makefile能不能做make install?
  • makefile搜索目录下的程序的问题
  • VC中的预处理程序定义 在makefile中如何表达啊?(望高手指点)
  • 请教makefile中的一段sed程序
  • 在linux下写了一个简单程序,请问如何写makefile
  • 编写内核模块程序的makefile文件make错误
  • **** Linux上的程序移植到AIX上,Makefile怎么写? *****
  • 将生成的程序输出到一个指定的目录,Makefile.am应该怎么写?
  • 怎么在makefile里面实现开机启动某程序?
  • 用-g编译器选项编译程序就在makefile中按下面样子的加进去吗:
  • 用Makefile编译程序时出现的问题?
  • 马上给分!我把C程序改成C++程序,Makefile中用GCC可以,G++就不行了?
  •  
    本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
    本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • Makefile.in,Makefile.am,Makefile.bor应该怎么用?
  • makefile.am和makefile.in是什么文件,与makefile有什么联系吗?
  • 最近在学习linux C 看到了makefile部分,觉得makefile的语法很难理解,Makefile 的语法是不是shell语法?
  • 求解makefile问题,makefile.conf的作用?
  • 有makefile.am,有 makefine.in 为什么就是没有Makefile?
  • makefile如何调用文件目录下的makefile
  • 请教根据Makefile.am自动生成Makefile的问题
  • 怎麼樣使Makefile.in生成Makefile?
  • 【makefile使用】请问怎样在shell中获取makefile的最终目标?
  • unix下面make makefile文件,提示“makefile is up-to-date",怎么办呀?
  • Makefile使用遇到的问题!"Makefile:3:missing the separator.stop"在线等待.......
  • Makefile是如何输出执行的路径的,表示执行的是那个Makefile
  • 下的tar.gz源码里只有makefile.in和makefile.am
  • 一句 makefile 的解释 -- makefile 与 shel 结合
  • linux makefile error :Makefile:335: *** commands commence before first target。
  • [test@localhost ~]$ cat <makefile >catfile 跟cat > catfile <makefile是一样的吧?
  • 关于makfile,makefile.in, makefile.am. configure之间的关系
  • win32下编译Linux 下的项目(makefile.am和makefile.in)
  • 关于makefile的问题。一个makefile如何生成两个可执行文件。
  • make -f makefile 时提示 Make: Must be a separator on rules line 5. Stop. 为什么,makefile 如下


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3