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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/pingmian/29032.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

牛客周赛 C-苗苗的气球

原题链接&#xff1a;C-苗苗的气球 题目大意&#xff1a;n种气球&#xff0c;给出每种气球的个数&#xff0c;二种不同的气球相碰会爆炸&#xff0c;问最后留下来的气球有几种可能性。 思路&#xff1a;从特殊到一般&#xff0c;如果是一种气球&#xff0c;那么答案肯定是1&a…

mysql [Err] 1118 - Row size too large (> 8126).

1.找到my.ini文件 1.1 控制台输入以下指令&#xff0c;打开服务 services.msc1.2 查看mysql服务的属性 2.停止mysql服务&#xff0c;修改my.ini文件并且保存 innodb_strict_mode03.重启mysql服务 4.验证是否关闭成功 show variables like %innodb_strict_mode%; show vari…

【华为免费实战课】基于ENSP实现企业园区网组网项目实战

带你一起走进网工的世界&#xff01; 2024年G-LAB【华为实战公开课】即将开始啦&#xff01;华为实战千万别错过&#xff01; 公开课为期四天&#xff0c;6月18日-6月21日晚20&#xff1a;00开始 关注 工 仲 好&#xff1a;IT运维大本营&#xff0c;私信glab-mary&#xff0…

算法课程笔记——线段树维护哈希

算法课程笔记——线段树维护哈希 提前空出来

FastAdmin后台开发框架 lang 任意文件读取漏洞复现

0x01 产品简介 FastAdmin是一款基于PHPBootstrap的开源后台框架&#xff0c;专为开发者精心打造。它基于ThinkPHP和Bootstrap两大主流技术构建&#xff0c;拥有完善的权限管理系统和一键生成CRUD等强大功能。FastAdmin致力于提高开发效率&#xff0c;降低开发成本&#xff0c;…

git error: does not have a commit checked out fatal: adding files failed

git add net error: net/ does not have a commit checked out fatal: adding files failed这个错误是因为尝试将一个尚未被提交的文件夹添加到Git中。解决这个问题的方法是先将文件夹中的文件提交到Git仓库中&#xff0c;然后再将文件夹添加到Git中。 首先&#xff0c;需要进…

苏州辰安塑业携塑料托盘、塑料物流箱解决方案亮相2024杭州快递物流展

苏州辰安塑业携塑料托盘、吹塑托盘、塑料卡板箱、塑料周转箱、塑料物流箱、塑料垃圾桶解决方案盛装亮相2024杭州快递物流展&#xff01; 展位号&#xff1a;3C馆A51 苏州辰安塑业有限公司&#xff0c;是一家专业从事塑料托盘、吹塑托盘、塑料卡板箱、塑料周转箱、塑料物流箱、…

【计算机毕业设计】235基于微信小程序点餐系统

&#x1f64a;作者简介&#xff1a;拥有多年开发工作经验&#xff0c;分享技术代码帮助学生学习&#xff0c;独立完成自己的项目或者毕业设计。 代码可以私聊博主获取。&#x1f339;赠送计算机毕业设计600个选题excel文件&#xff0c;帮助大学选题。赠送开题报告模板&#xff…

CentOS搭建kubernetes集群详细过程(yum安装方式)

kubernetes集群搭建详细过程&#xff08;yum安装方式&#xff09; Kubernetes&#xff0c;也被称为K8s&#xff0c;是一个多功能的容器管理工具&#xff0c;它不仅能够协调和调度容器的部署&#xff0c;而且还能监控容器的健康状况并自动修复常见问题。这个平台是在谷歌十多年…

减肥药实质利好服装业:身材好了,更时尚了 1-5月份,新建商品房销售面积同比下降20.3%

减肥药实质利好服装业&#xff1a;身材好了&#xff0c;更时尚了 减肥成功的顾客纷纷瞄准性感look&#xff0c;不但促进了销售&#xff0c;还给服装品牌节省了成本&#xff0c;因为小尺寸的衣服使用的面料更少。大码女装&#xff0c;可能是下一个被 GLP-1减肥神药杀死的行业。…

基于ChatGPT-4o自然科学研究全流程实践技术应用

自然科学研究遵循严谨的科学方法论&#xff0c;包括文献调研、问题综述、试验设计、提出假设、数据清洗、统计诊断、大数据分析、经典统计模型&#xff08;回归模型、混合效应模型、结构方程模型、Meta分析模型&#xff09;、参数优化、机器/深度学习、大尺度模型构建与模拟、论…

万字长文详述 - 带你了解Jvm虚拟机运行时数据区

JVM虚拟机&#xff0c;对大部分Java程序员而言&#xff0c;是既熟悉又陌生的存在&#xff0c;Java程序在虚拟机的自动内存管理机制帮助下&#xff0c;减少了绝大部分的内存管理工作。但也正是因为如此&#xff0c;虚拟机如果出现了内存溢出或者泄露的情况&#xff0c;问题排查、…

C++ SIMD性能优化

// 使用SIMD指令优化的向量加法 //<mmintrin.h> MMX //<xmmintrin.h> SSE //<emmintrin.h> SSE2 //<pmmintrin.h> SSE3 //<tmmintrin.h> SSSE3 //<smmintrin.h> SSE4.1 //<nmmintrin.h> SSE4.2 //<wmmintrin.h> AES //<imm…

一文细谈SNN的基本数学原理,LIF模型,STDP与STBP学习方法

首先本文是读完 如何看待第三代神经网络SNN&#xff1f;详解脉冲神经网络的架构原理、数据集和训练方法 原创-CSDN博客 一文通俗入门脉冲神经网络(SNN)第三代神经网络-CSDN博客 两篇文章的总结&#xff0c;文章仅用于学习。 本文主要讨论STDP和STBP方法。 我们都知道&…

JavaEE、SSM基础框架、JavaWeb、MVC(认识)

目录 一、引言 &#xff08;0&#xff09;简要介绍 &#xff08;1&#xff09;主要涉及的学习内容 &#xff08;2&#xff09;学习的必要性 &#xff08;3&#xff09;适用学习的人群&#xff08;最好有这个部分的知识基础&#xff09; &#xff08;4&#xff09;这个基础…

FFmpeg中内存分配和释放相关的源码:av_malloc函数、av_mallocz函数、av_free函数和av_freep函数分析

一、av_malloc函数分析 &#xff08;一&#xff09;av_malloc函数的声明 av_malloc函数的声明放在在FFmpeg源码&#xff08;本文演示用的FFmpeg源码版本为5.0.3&#xff0c;该ffmpeg在CentOS 7.5上通过10.2.1版本的gcc编译&#xff09;的头文件libavutil/mem.h中&#xff1a;…

Science | 稀土开采威胁马来西亚的生物多样性

马来西亚是一个生物多样性热点地区&#xff0c;拥有超过17万种物种&#xff0c;其中1600多种处于濒临灭绝的风险。马来西亚的热带雨林蕴藏了大部分的生物多样性&#xff0c;并为全球提供重要的生态系统效益&#xff0c;同时为土著社区带来经济和文化价值。同时马来西亚具有可观…

Python批量保存Excel文件中的图表为图片

Excel工作簿作为一款功能强大的数据处理与分析工具&#xff0c;被广泛应用于各种领域&#xff0c;不仅能够方便地组织和计算数据&#xff0c;还支持用户创建丰富多彩的图表&#xff0c;直观展示数据背后的洞察与趋势。然而&#xff0c;在报告编制、网页内容制作或分享数据分析成…

30.保存游戏配置到文件

上一个内容&#xff1a;29.添加录入注入信息界面 以 29.添加录入注入信息界面 它的代码为基础进行修改 效果图&#xff1a; 首先在我们辅助程序所在目录下创建一个ini文件 文件内容 然后首先编写一个获取辅助程序路径的代码 TCHAR FileModule[0x100]{};GetModuleFileName(NUL…

选择专业还是选择学校?——给2024年高考生的建议

2024年高考帷幕落下&#xff0c;新一轮的选择与思考已经悄然来临。对于每一位高考考生来说&#xff0c;如何在学校和专业之间做出选择是一个至关重要的决策。这个决定不仅会影响到他们未来的职业发展和个人兴趣的培养&#xff0c;还将决定他们大学期间的生活质量和社会交往环境…