Linuxc - 多c文件程序编译执行
多文件使用,一起编译
定义max.h
int max(int a,int b);
定义max.c
#include "max.h"
int max(int a,int b)
{
if (a > b) {
return a;
} else {
return b;
}
}
定义主c文件
#include <stdio.h>
#include "max.h"
int main()
{
int a1 = 22;
int a2 = 33;
int maxNum = max(a1,a2);
printf("the max value is %d\n",maxNum);
return 0;
}
编译执行!
root@jiqing-virtual-machine:~/cspace/les2# gcc max.c main.c -o main.out
查看
root@jiqing-virtual-machine:~/cspace/les2# ./main.out
the max value is 33
分别编译
头文件的好处,一次编译,多次使用。
只需要引入声明就可以了。
root@jiqing-virtual-machine:~/cspace/les2# gcc max.o min.o main.c
main.c: In function ‘main’:
main.c:8:18: warning: implicit declaration of function ‘max’ [-Wimplicit-function-declaration]
int maxNum = max(a1,a2);
^
main.c:9:18: warning: implicit declaration of function ‘min’ [-Wimplicit-function-declaration]
int minNum = min(a1,a2);
^
没有声明,会报错。
#include <stdio.h>
//#include "max.h"
//#include "min.h"
int main()
{
int a1 = 22;
int a2 = 33;
int maxNum = max(a1,a2);
int minNum = min(a1,a2);
printf("the max value is %d\n",maxNum);
printf("the min value is %d\n",minNum);
return 0;
}
将注释的去掉就可以了。
单个编译max.c,min.c
root@jiqing-virtual-machine:~/cspace/les2# gcc -c max.c -o max.o
root@jiqing-virtual-machine:~/cspace/les2# gcc -c min.c -o min.o
编译成max.o和min.o之后,计算机就能够识别了。
以后可以在多个c文件中使用。只需要引入头文件h就可以了。
root@jiqing-virtual-machine:~/cspace/les2# gcc max.o min.o main.c -o main.out
root@jiqing-virtual-machine:~/cspace/les2# ./main.out
the max value is 33
the min value is 22
Linuxc - 多c文件程序编译执行的更多相关文章
- C程序编译执行过程
C程序编译执行过程 认识C编译执行过程,是C学习的开端. 简单说C语言从编码编译到执行要经历一下过程: C源代码 编译---->形成目标代码,目标代码是在目标机器上运行的代码. 连接-- ...
- Java文件手动编译执行步骤
Java编译执行步骤: 1)将 Java 代码编写到扩展名为 .java 的文件中.2)通过 javac 命令对该 java 文件进行编译.3)通过 java 命令对生成的 class 文件进行运行. ...
- ubuntu 16.04 上opengl 的安装以及例子程序编译执行
因为最近在移植 Qt5.7 + opengl , 遇到了难以越过的山峰,没有办法,试着在 ubuntu 16.04上将 opengl 配置以下,记录: 安装相关的库: sudo apt-get ins ...
- c++应用程序文件的编译过程
这里讲下C++文件的编译过程及其中模板的编译过程: 一:一般的C++应用程序的编译过程. 一般说来,C++应用程序的编译过程分为三个阶段.模板也是一样的. 在cpp文件中展开include文件 ...
- JAVA 文件编译执行与虚拟机(JVM)简单介绍
详见:http://blog.yemou.net/article/query/info/tytfjhfascvhzxcytpo3 java程序的内存分配 JAVA 文件编译执行与虚拟机(JVM)介绍 ...
- 编译 & 执行 C++ 程序
编译 & 执行 C++ 程序接下来让我们看看如何把源代码保存在一个文件中,以及如何编译并运行它.下面是简单的步骤: 打开一个文本编辑器,添加上述代码.保存文件为 hello.cpp.打开命令提 ...
- [转]c++应用程序文件的编译过程
原文地址 这里讲下C++文件的编译过程及其中模板的编译过程: 一:一般的C++应用程序的编译过程. 一般说来,C++应用程序的编译过程分为三个阶段.模板也是一样的. 在cpp文件中展开inclu ...
- 问题:程序编译通过,但是执行时报错:coredump
问题描述: 在一个客户现场搭建环境时,遇到了一个棘手的问题,C代码编译通过后,无法正常运行,启动会出现“coredump”错误. 运行环境为新搭建的AIX6.1,数据库为Oracle11.2.0.2. ...
- C程序编译和执行
编译 & 执行 C 程序 首先准备一个源码文件 hello.c 键入如下代码: #include <stdio.h> int main() { /* 我的第一个 C 程序 */ p ...
随机推荐
- Python入门-数据类型之字符串
字符串详解 没那么多废话,直接介绍字符串使用.继续往下看~~~ 字符串定义: *1.引号包围,不可变(指的是不可以对字符串进行修改)得序列(凡是能够通过索引取值的都是序列). *2.不可变对象(字符串 ...
- 理解css伪类和伪元素
伪类就是可以通过直接添加一个类样式达到同等效果,而伪元素,则需要先添加一个元素,然后在元素上添加样式才能达到同等效果 伪类 :active 向被激活的元素添加样式. :focus 向拥有键盘输入焦点的 ...
- TurnipBit开发板掷骰子小游戏DIY教程实例
转载请以链接形式注明文章来源(MicroPythonQQ技术交流群:157816561,公众号:MicroPython玩家汇) 0x00前言 下面带大家用TurnipBit开发板实现一个简单的小游戏- ...
- [Spark内核] 第28课:Spark天堂之门解密
本課主題 什么是 Spark 的天堂之门 Spark 天堂之门到底在那里 Spark 天堂之门源码鉴赏 引言 我说的 Spark 天堂之门就是SparkContext,这篇文章会从 SparkCont ...
- TensorFlow实现knn(k近邻)算法
首先先介绍一下knn的基本原理: KNN是通过计算不同特征值之间的距离进行分类. 整体的思路是:如果一个样本在特征空间中的k个最相似(即特征空间中最邻近)的样本中的大多数属于某一个类别,则该样本也属于 ...
- Python 的类的下划线命名有什么不同?
1. 以一个下划线开头的命名 ,如_getFile2. 以两个下划线开头的命名 ,如__filename3. 以两个下划线开头和结尾的命名,如 __init__()4. 其它 单下划线前缀的 ...
- C#串口发送数据
使用指定的端口名.波特率.奇偶校验位.数据位和停止位初始化 SerialPort 类的新实例 SerialPort serialPort = new SerialPort("COM3&quo ...
- Chris Richardson微服务翻译:微服务介绍
作者简介:Chris Richardson,世界著名的软件架构师,经典著作<POJOS IN ACTION>的作者,cloudfoundry.com 的创始人 微服务目前正受到大量的关注, ...
- nginx的配置
1. brew install nginx 2.brew services list 3.brew services start nginx 4.brew servicies stop nginx 5 ...
- Video Target Tracking Based on Online Learning—TLD单目标跟踪算法详解
视频目标跟踪问题分析 视频跟踪技术的主要目的是从复杂多变的的背景环境中准确提取相关的目标特征,准确地识别出跟踪目标,并且对目标的位置和姿态等信息精确地定位,为后续目标物体行为分析提供足 ...