Linux利器:使用 gcc 编程C程序
文章更新于:2020-03-23
文章目录
一、手动编译链接单个C源文件
1、创建C源文件
注:此处创建名为 hello.c 的源文件。
#include<stdio.h>
int main()
{
printf("hello,world!\n");
return 0;
}
2、编译源文件
gcc -c hello.c

3、生成可执行文件
注:此处的 result 为你想要输出的可执行文件名。
gcc -o result hello.o

二、手动编译链接多个C源文件
1、创建两个C源文件
注:此处创建名为 hello.c 和 hello2.c 的两个源文件。
#include<stdio.h>
int main()
{
printf("hello,world!\n");
testfun(); //调用另一个源文件中的函数
return 0;
}
#include<stdio.h>
void testfun()
{
printf("\nThis is in hello2!\n");
}
2、编译两个源文件
注:此处也可使用 gcc -c *.c 来编译多个C源文件。
gcc -c hello.c hello2.c

3、生成可执行文件
gcc -o result hello.o hello2.o

三、使用Makefile自动编译链接
1、创建C源文件
注1:此处延续使用上述例子的两个C源文件。
注2:创建名为 hello.c 和 hello2.c 的两个源文件。
#include<stdio.h>
int main()
{
printf("hello,world!\n");
testfun(); //调用另一个源文件中的函数
return 0;
}
#include<stdio.h>
void testfun()
{
printf("\nThis is in hello2!\n");
}
2、创建Makefile文件
注1:这里的hello.o 、hello2.o 是要创建的两个目标文件。
注2:result 为要输出的可执行文件名。
注3:gcc行前面的空白是Tab键生成的。
main: hello.o hello2.o
gcc -o result hello.o hello2.o -lm
3、执行make生成可执行文件

4、加上参数清理中间文件(可选)
注1:如果不想要中间产生的*.o文件,可在Makefile中加入清理参数。
注2:最后一行也可以写成 rm -f *.o。
main: hello.o hello2.o
gcc -o result hello.o hello2.o -lm
clean:
rm -f hello.o hello2.o

四、Enjoy!
Linux利器:使用 gcc 编程C程序的更多相关文章
- Linux下使用gcc编程初体验
近期刚刚放弃了Windows,投入了Ubuntu 的怀抱.今天就拿一个小小的案例来做一下C语言的编译和运行流程.额,顺便说一句.本文适合那些Linux新手,不适合老鸟哈. 看完本文可以学到什么? 程序 ...
- Linux 利器- Python 脚本编程入门(一)
导读 众所周知,系统管理员需要精通一门脚本语言,而且招聘机构列出的职位需求上也会这么写.大多数人会认为 Bash (或者其他的 shell 语言)用起来很方便,但一些强大的语言(比如 Python)会 ...
- LINUX下C语言编程基础
实验二 Linux下C语言编程基础 一.实验目的 1. 熟悉Linux系统下的开发环境 2. 熟悉vi的基本操作 3. 熟悉gcc编译器的基本原理 4. 熟练使用gcc编译器的常用选项 5 .熟练使用 ...
- Linux下的C编程实战
Linux下的C编程实战(一) ――开发平台搭建 1.引言 Linux操作系统在服务器领域的应用和普及已经有较长的历史,这源于它的开源特点以及其超越Windows的安全性和稳定性.而近年来, Linu ...
- Linux基础与Linux下C语言编程基础
Linux基础 1 Linux命令 如果使用GUI,Linux和Windows没有什么区别.Linux学习应用的一个特点是通过命令行进行使用. 登录Linux后,我们就可以在#或$符后面去输入命令,有 ...
- Linux守护进程的编程实现
Linux 守护进程的编程方法 守护进程(Daemon)是执行在后台的一种特殊进程.它独立于控制终端而且周期性地执行某种任务或等待处理某些发生的事件.守护进程是一种非常实用的进程.Linux的大多数s ...
- Linux 应用层的时间编程【转】
转自:https://blog.csdn.net/chinalj2009/article/details/21223681 浅析 Linux 中的时间编程和实现原理,第 1 部分: Linux 应用层 ...
- Linux下C语言编程基础学习记录
VIM的基本使用 LINUX下C语言编程 用gcc命令编译运行C语言文件 预处理阶段:将*.c文件转化为*.i预处理过的C程序. 编译阶段:将*.i文件编译为汇编代码*.s文件. 汇编阶段:将*.s ...
- 【转】Linux基础与Linux下C语言编程基础
原文:https://www.cnblogs.com/huyufeng/p/4841232.html ------------------------------------------------- ...
随机推荐
- javaee作业
一.单选题(共5题,50.0分) 1 在SqlSession对象的openSession()方法中,不能作为参数executorType的可选值 的是( ). A. ExecutorTyp ...
- Simulink仿真入门到精通(八) M语言对Simulink模型的自动化操作及配置
8.1 M语言控制模型的仿真 M语言与Simulink结合的方式: 在Simulink模型或模块中使用回调函数 在M语言中调用与模型相关的命令,控制模型的建立,设置模块的属性,增删信号线,以及运行模型 ...
- 小白学 Python 数据分析(16):Matplotlib(一)坐标系
人生苦短,我用 Python 前文传送门: 小白学 Python 数据分析(1):数据分析基础 小白学 Python 数据分析(2):Pandas (一)概述 小白学 Python 数据分析(3):P ...
- Python深度学习 deep learning with Python
内容简介 本书由Keras之父.现任Google人工智能研究员的弗朗索瓦•肖莱(François Chollet)执笔,详尽介绍了用Python和Keras进行深度学习的探索实践,涉及计算机视觉.自然 ...
- vue-autoui自匹配webapi的UI控件
vue-autoui 是一款基于vue和element扩展的一个自动化UI控件,它主要提供两个控件封装分别是auto-form和auto-grid; 通过这两个控件可以完成大多数的信息输入和查询输出的 ...
- 前端构建工具gulpjs的使用介绍及技巧【转载】
转载至:http://www.cnblogs.com/2050/p/4198792.html gulpjs是一个前端构建工具,与gruntjs相比,gulpjs无需写一大堆繁杂的配置参数,API也非常 ...
- Javaweb编程
首先是题目要求: 1登录账号:要求由6到12位字母.数字.下划线组成,只有字母可以开头:(1分) 2登录密码:要求显示“• ”或“*”表示输入位数,密码要求八位以上字母.数字组成.(1分) 3性别:要 ...
- JAVA-迭代器\增强型for循环。(新手)
//导入的包.import java.lang.reflect.Array;import java.util.*;//创建的一个类.public class zylx1 { //公共静态的主方法. p ...
- Natas26 Writeup(PHP反序列化漏洞)
Natas26: 打开页面是一个输入坐标点进行绘图的页面. <html> <head> <!-- This stuff in the header has nothing ...
- 关于python如何安装和配置chromedriver以及一些相关问题
解决问题三部曲:观察,思考,尝试 1.如何配置chromedriver: https://www.cnblogs.com/lintest/p/11697059.html 常见异常解决的一个参考吧:ht ...