gcc 常用参数 -c -o

如果一个项目有两个h文件,三个c文件组成,其中一个c文件是main.c里面调用其他两个c文件中实现的函数。如下所示:

//mytool1.h

#ifndef _MYTOOL_1_H 
#define _MYTOOL_1_H 
    void mytool1_print(char *print_str); 
#endif 
 

//mytool1.c

#include "mytool1.h"
void mytool1_print(char *print_str)
{
  printf("This is mytool1 print %s ",print_str);

 

//mytool2.h

#ifndef _MYTOOL_2_H 
#define _MYTOOL_2_H 
void mytool2_print(char *print_str);
#endif 
 

//mytool2.c

#include "mytool2.h" 
void mytool2_print(char *print_str)

  printf("This is mytool2 print %s",print_str);
}

//main.c

#include "mytool1.h"
#include "mytool2.h"
int main(int argc,char **argv)
{
  mytool1_print("sds");
  mytool2_print("sdsd");
}

方法1:先只编译每个c文件,生成中间文件,再连接中间文件:

如果用gcc命令进行编译,可以每个c文件先生成中间文件即o文件,然后三个中间文件进行连接生成最中的可执行文件。

   gcc -c mytool1.c  //这样生成了mytool1.o文件

   gcc -o mytool2.c //这样生成了mytool2.o文件

   gcc -o main.c     //这样生成main.o文件

最后把生成的三个中间文件连接起来,最终生成可执行的test文件:

   gcc -o test mytool1.o mytool2.o main.o 

这个连接文件的顺序无所谓,只要保证这些被连接的o文件中有且仅有一个main函数即可。

方法2:直接生成最后的可执行文件,不生成过程o文件:

  gcc -o test mytool1.c mytool2.c main.c

 

 

你可能感兴趣的:(编译相关)