面试官:Linux如何编译出C程序?(linux怎么编译c程序)

Windows下常用IDE来编译,Linux下直接使用gcc来编译,编译过程是Linux嵌入式编程的基础,也是嵌入式高频基础面试问题。

一、命令行编译及各个细分编译过程

hello.c示例代码:

#include <stdio.h>int main(void){ printf("Hello worldn"); return 0;}

编译:

gcc hello.c -o hello

面试官:Linux如何编译出C程序?(linux怎么编译c程序)

如有必要,还需回答出细分的几个步骤:

gcc -E hello.c -o hello.i  # 预处理阶段gcc -S hello.i -o hello.s  # 编译阶段gcc -c hello.s -o hello.o  # 汇编阶段gcc hello.o -o hello       # 链接阶段

具体细节可查这一篇笔记:C程序的编译过程

二、借助make来编译

少量文件时可以使用上面方法编译。源码文件较多时,可借用make工具。make通过解析Makefile文件来执行一些gcc命令进行编译。首先得创建一个Makefile文件,如:

hello:hello.c        gcc hello.c -o hello

编译运行:

面试官:Linux如何编译出C程序?(linux怎么编译c程序)

上面更细分编译过程的Makefile文件如下:

面试官:Linux如何编译出C程序?(linux怎么编译c程序)

三、借助CMake生成Makefile

实际开发很少会像上面一样自己编写Makefile文件,可借助cmake工具来生成。

CMake是一个跨平台的安装(编译)工具,可以用简单的语句来描述所有平台的安装(编译过程)。

1、命令行操作

首先输入cmake –version命令查看cmake版本,若还没安装则执行如下命令安装:

sudo apt install cmake

面试官:Linux如何编译出C程序?(linux怎么编译c程序)

下面开始实验演示。我们的cmake_test文件夹下有一个hello.c文件,在同文件夹下创建一个 CMakeLists.txt 文件:

面试官:Linux如何编译出C程序?(linux怎么编译c程序)

输入如下内容:

cmake_minimum_required (VERSION 3.10.2)project (cmake_test)add_executable(cmake_test hello.c)

然后在cmake_test目录下依次输入如下命令生成Makefile文件:

mkdir build  # 创建build文件夹cd build     # 进入build文件夹cmake ../    # 在cmake_test文件夹下生成Makefile

执行结果如下:

面试官:Linux如何编译出C程序?(linux怎么编译c程序)

关于CMakeLists.txt文件具体语法感兴趣的朋友可自行查阅资料进行学习。

2、使用cmake-gui

上述是在命令行下使用cmake生成Makefile进行进行编译的方法。我们也可以使用图形化界面来生成Makefile文件。cmake-gui是cmake的一个图形化工具。下面依旧以实例作为演示。

我们把上一小节的CMakeLists.txthello.c文件放入新创建的文件夹cmake-gui_test中:

面试官:Linux如何编译出C程序?(linux怎么编译c程序)

在终端输入 cmake-gui 命令启动cmake-gu图形化工具。若未安装可输入如下命令进行安装:

sudo apt install cmake-qt-gui

如:

面试官:Linux如何编译出C程序?(linux怎么编译c程序)

启动cmake-gui

面试官:Linux如何编译出C程序?(linux怎么编译c程序)面试官:Linux如何编译出C程序?(linux怎么编译c程序)面试官:Linux如何编译出C程序?(linux怎么编译c程序)

查看cmake-gui_test文件夹:

面试官:Linux如何编译出C程序?(linux怎么编译c程序)

编译运行:

面试官:Linux如何编译出C程序?(linux怎么编译c程序)

以上分享了一些编译的过程及方法,都是基础内容,需要熟练掌握。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

(0)
上一篇 2023年5月21日 上午9:27
下一篇 2023年5月21日 上午9:43

相关推荐

  • INTOUCH软件是什么品牌

    IN Touch 软件是什么品牌 IN Touch 软件是一家总部位于中国的软件开发公司,成立于 2010 年,其主要产品有 IN Touch 社交软件、IN Touch 音乐播放…

    科研百科 2024年11月30日
    35
  • 如何开发项目管理系统

    如何开发项目管理系统 随着组织规模的扩大和项目数量的增加,开发项目管理系统变得越来越重要。一个高效的项目管理系统可以帮助团队更好地协调和管理项目,提高项目完成的效率和质量。本文将介…

    科研百科 2024年12月17日
    0
  • 考察表审批表入档案后

    考察表审批表入档案后 考察表审批表是考察申请人员情况的重要文件,也是考察过程的重要记录。当考察表审批表入档案后,它成为了考察申请人员情况的重要证据,同时也是考察机构对考察申请人员情…

    科研百科 2024年10月21日
    0
  • 四川工会经费管理办法

    四川工会经费管理办法 为加强四川工会经费管理,保障工会工作正常开展,根据《中华人民共和国工会法》和四川省实际情况,四川省劳动和社会保障厅制定了《四川工会经费管理办法》。 第一章 总…

    科研百科 2024年9月12日
    29
  • 军工产品批产流程 定型属于哪个阶段

    军工产品批产流程和定型阶段 军工产品批产流程和定型阶段是军工企业生产产品的重要步骤。在军工产品的批产流程中,产品需要进行定型,以确保产品的质量和性能符合相关标准。 军工产品的批产流…

    科研百科 2024年10月24日
    1
  • 科技厅有什么实权

    科技厅有什么实权科技厅有什么实权科技馆科技馆的主要职能如下:一、科普展览:科技馆主要培养学生们对科学的渴求,对科学实验的兴趣,展现科技素养,传播科学知识。二、课程设置:作为天文舞台…

    科研百科 2024年11月26日
    0
  • “聚焦项目管理 助企降本增效”湛山创客工厂企业管理公益培训讲座

    为进一步提升企业管理决策水平、加强企业资金使用效率、助力企业降本增效,赋能企业高质创新发展。1月31日下午,湛山创客工厂开展“聚焦项目管理提升 助力企业降本增效”企业管理培训讲座,…

    科研百科 2024年4月24日
    101
  • 2023年中国软件开发行业上市公司净利润排行榜TOP100(国内软件开发上市企业)

    2023年中国软件开发行业上市公司净利润排行榜TOP100(附榜单)中商产业研究院 2024-05-07 10:47 中商情报网讯:近日,上市公司陆续公布经营情况。软件开发行业共有…

    科研百科 2024年9月14日
    37
  • 促进科研项目执行 促进科研成果

    促进科研项目执行 促进科研成果 近年来,随着科技的不断发展,科研项目的执行和科研成果的质量已经成为了科研界最为关注的问题之一。在科研项目的执行过程中,一些困难和挑战可能会阻碍科研成…

    科研百科 2024年4月1日
    116
  • 2024年汽车软件开发状况调查结果出炉:软件研发人员必看(汽车行业软件开发)

    在今年1月底,嵌入式静态分析领域公认的行业领导及先驱Perforce公司联合北汇信息首次诚挚邀请中国汽车软件开发专业人士参加2024年汽车发展行业状况报告的调查。现调查结果报告已新…

    科研百科 2024年5月1日
    125