IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> C++知识库 -> Ubuntu系统使用gcc和Makefile编译C程序 -> 正文阅读

[C++知识库]Ubuntu系统使用gcc和Makefile编译C程序

目录

(一)直接使用gcc编译C程序

1.编写C程序

2.gcc直接编译

?(二)与windows平台编程对比

(三)使用Makefile编译c程序

1.Makefile文件编写规则

2.编写Makefile文件并编译


(一)直接使用gcc编译C程序





1.编写C程序

  • 编写main1.c
    #include"sub1.h"
    
    int main()
    {
    	int x=2,y=9;            //定义x和y变量
    	printf("%.2f\n",x2x(x,y));      //输出处理后的值,保留两位小数
    	return 0;
    }
    

  • 编写sub1.h
    #ifndef __SUB1_H
    #define __SUB1_H
    
    #include<stdio.h>
    
    float x2x(int a,int b);         //计算b除以a的结果
    
    #endif
    

  • 编写sub1.c
    #include "sub1.h"
    
    /*******************/
    /*     参数:a,b	   */
    /*    返回值:ans    */
    /*******************/
    float x2x(int a,int b)
    {
    	float ans;
    	ans=(float)b/a;
    	return ans;
    }
    

    2.gcc直接编译

  • 步骤一
    命令:gcc -c sub1.c
    作用:将sub1.c程序转换为目标文件sub1.o

  • 步骤二
    命令:gcc main1.c sub1.o -o main1
    作用:编译main1.c文件为目标文件main1.o,然后链接sub1.o目标文件生成main1可执行文件

  • 步骤三
    执行
    ./main1命令,即可执行编译生成的main1程序

    ?

    ?(二)与windows平台编程对比

  • 工具:dev c++
  • 程序:与Ubuntu系统上一致
  • 遇到的问题
  • 无法多文件编译
    因为我的文件夹下有一个main1.c文件,sub1.h和sub1.c文件。此时如果在main1.c文件下直接点击运行按钮会报错,因为sub1.c并没有编译,因此会出现main1.c引用的sub1.c中的函数没有定义的问题。
  • 解决方案:建立一个项目,将三个文件放进同一项目中

?

(三)使用Makefile编译c程序

??



  • 1.Makefile文件编写规则

    target:prerequisites
    	command			# command以一个tab键开始
    
    # target为一个目标文件,可以是Object File,也可以是执行文件。还可以是一个标签(Label)
    # prerequisites是需要生成target所依赖的文件或是目标
    # command也就是make需要执行的命令。(任意的Shell命令)
    

    2.编写Makefile文件并编译

  • 编写Makefile文件
    main1:sub1.o main1.c
            gcc main1.c sub1.o -o main1
    
    sub1.o:sub1.c
            gcc -c sub1.c -o sub1.o
    
    clean:
            rm *.o 
    
  • 使用Makefile编译c程序
    在源文件目录下执行命令make,即可编译得到可执行文件main1

  • 删除编译产生的中间文件,在源文件目录下执行命令make clean,即可删除编译过程中产生的*.o文件

参考网站:
Ubuntu16.04下C语言的编译及makefile的应用 - lee_24 - 博客园

??

  C++知识库 最新文章
【C++】友元、嵌套类、异常、RTTI、类型转换
通讯录的思路与实现(C语言)
C++PrimerPlus 第七章 函数-C++的编程模块(
Problem C: 算法9-9~9-12:平衡二叉树的基本
MSVC C++ UTF-8编程
C++进阶 多态原理
简单string类c++实现
我的年度总结
【C语言】以深厚地基筑伟岸高楼-基础篇(六
c语言常见错误合集
上一篇文章      下一篇文章      查看所有文章
加:2021-09-13 09:05:31  更:2021-09-13 09:06:45 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年5日历 -2024/5/19 23:19:47-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码