欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 汽车 > 时评 > Linux下C程序的编写

Linux下C程序的编写

2025/9/17 23:17:59 来源:https://blog.csdn.net/weixin_63780361/article/details/139745323  浏览:    关键词:Linux下C程序的编写

Linux下C程序的编写

第一部分:编写C程序并使用gcc编译器

首先,我们编写一个简单的C程序hello_gcc.c,用于在屏幕上输出“Hello gcc!”。

// hello_gcc.c  
#include <stdio.h>  int main() {  printf("Hello gcc!\n");  return 0;  
}

然后,我们可以使用gcc编译器并带上不同的选项来观察生成的文件。

  1. 编译并生成可执行文件(不使用中间文件):
gcc hello_gcc.c -o hello_gcc
  1. 编译并生成预处理文件(.i):
gcc -E hello_gcc.c -o hello_gcc.i
  1. 编译预处理文件并生成汇编文件(.s):
gcc -S hello_gcc.i -o hello_gcc.s  
# 或者直接使用源文件,gcc会先预处理再生成汇编文件  
gcc -S hello_gcc.c -o hello_gcc.s
  1. 编译汇编文件并生成目标文件(.o):
gcc -c hello_gcc.s -o hello_gcc.o  
# 或者直接从源文件编译到目标文件  
gcc -c hello_gcc.c -o hello_gcc.o
  1. 链接目标文件并生成可执行文件:
gcc hello_gcc.o -o hello_gcc

(注意:在实际操作中,通常不会单独编译汇编文件,而是直接从源文件编译到目标文件。)

第二部分:编写包含多个文件的C程序并编写Makefile

接下来,我们编写一个包含头文件greeting.h、自定义函数文件greeting.c和主函数文件myapp.c的C程序。

greeting.h(头文件):

// greeting.h  
#ifndef GREETING_H  
#define GREETING_H  void print_greeting();  #endif // GREETING_H

greeting.c(自定义函数文件):

// greeting.c  
#include <stdio.h>  
#include "greeting.h"  void print_greeting() {  printf("Hello from greeting.c!\n");  
}

myapp.c(主函数文件):

// myapp.c  
#include "greeting.h"  int main() {  print_greeting();  return 0;  
}

然后,我们编写一个Makefile文件来管理这些文件的编译过程。

Makefile

# Makefile  
CC=gcc  
CFLAGS=-Wall  TARGET=myapp  
SOURCES=$(wildcard *.c)  
OBJECTS=$(SOURCES:.c=.o)  all: $(TARGET)  $(TARGET): $(OBJECTS)  $(CC) $(CFLAGS) -o $@ $^  %.o: %.c  $(CC) $(CFLAGS) -c $< -o $@  clean:  rm -f $(OBJECTS) $(TARGET)

在这个Makefile中,我们定义了编译器(CC)、编译选项(CFLAGS)、目标文件(TARGET)、源文件(SOURCES)、目标文件列表(OBJECTS)。我们还定义了allclean两个目标,分别用于编译和清理生成的文件。

要使用这个Makefile,只需在终端中进入包含Makefile的目录,并运行make命令即可编译程序。要清理生成的文件,可以运行make clean命令。

编译程序:

make

执行程序:

./myapp

清理生成的文件:

make clean

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

热搜词