0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

Linux下如何编译C程序?

Q4MP_gh_c472c21 来源:嵌入式大杂烩 2020-09-20 10:56 次阅读

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

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

hello.c示例代码:

#include intmain(void) { printf("Helloworld "); return0; }

编译:

gcchello.c-ohello

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

gcc-Ehello.c-ohello.i#预处理阶段 gcc-Shello.i-ohello.s#编译阶段 gcc-chello.s-ohello.o#汇编阶段 gcchello.o-ohello#链接阶段

具体细节可查往期笔记:《C程序编译过程》

二、借助make来编译

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

首先得创建一个Makefile文件,如:

hello:hello.c gcchello.c-ohello

编译运行:

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

关于make及Makefile更多内容可查阅:

【Linux笔记】make工程管理工具(一)

【Linux笔记】make工程管理工具(二)

三、借助CMake生成Makefile

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

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

1、命令行操作

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

sudoaptinstallcmake

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

输入如下内容:

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

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

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

执行结果如下:

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

2、使用cmake-gui

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

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

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

sudoaptinstallcmake-qt-gui

如:

启动cmake-gui:

查看cmake-gui_test文件夹:

编译运行:

以上分享了一些编译的过程及方法,都是基础内容,需要熟练掌握。如果觉得文章对你有帮助,欢迎转发。

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 嵌入式
    +关注

    关注

    5068

    文章

    19008

    浏览量

    303009
  • Linux
    +关注

    关注

    87

    文章

    11219

    浏览量

    208880
  • C程序
    +关注

    关注

    4

    文章

    254

    浏览量

    35993

原文标题:还能这样用?Linux下如何编译C程序?

文章出处:【微信号:gh_c472c2199c88,微信公众号:嵌入式微处理器】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    linux开发板如何编译curl

    Linux开发板上编译 curl 库通常涉及到几个步骤,包括准备开发环境、下载源代码、配置编译选项以及执行编译和安装过程。以下是一个基本的指南,帮助你在
    的头像 发表于 08-30 15:33 476次阅读

    linux驱动程序如何加载进内核

    ,需要了解Linux内核的基本概念和API。以下是一些关键概念: 1.1 内核模块:Linux内核模块是一种动态加载和卸载的代码,可以在不重新启动系统的情况加载和卸载。驱动程序通常以
    的头像 发表于 08-30 15:02 369次阅读

    linux驱动程序编译方法是什么

    Linux驱动程序编译方法主要包括两种: 与内核一起编译编译成独立的内核模块 。以下是对这两种方法的介绍: 一、与内核一起
    的头像 发表于 08-30 14:46 406次阅读

    linux驱动程序编译方法有哪两种

    Linux驱动程序编译方法主要可以归纳为两种: 手动编译 和 使用内核构建系统(Makefile)自动编译 。 1. 手动
    的头像 发表于 08-30 14:39 502次阅读

    飞凌嵌入式ElfBoard ELF 1板卡-Linuxi2c-tools的交叉编译

    Linuxi2c-tools的交叉编译1.下载地址:https://archive.kernel.org/oldwiki/i2c.wiki
    发表于 06-19 09:41

    嵌入式Linux C语言编程程序调试与宏定义

    Linux使用gcc编译程序的时候,对于调试的语句还具有一些特殊的语法。gcc编译的过程中,会生成一些宏,可以使用这些宏分别打印当前源文件的信息,主要内容是当前的文件、当前运行的函数和当前的
    发表于 03-01 11:41 888次阅读

    如何使用linuxgdb来调试python程序

    如何使用linuxgdb来调试python程序  在Linux,可以使用GDB(GNU调试器)来调试Python
    的头像 发表于 01-31 10:41 2416次阅读

    OK3568-C开发板_AMP_Linux4.19.232+QT5.15.8_用户编译手册_V1.0

    OK3568-C_AMP_Linux4.19.232+QT5.15.8_用户编译手册_V1.0_20231227
    发表于 01-23 16:28 11次下载

    赛昉系列:OK7110-C_Qt5.15.2+Linux5.15.0_编译手册_V1.0

    OK7110-C_Qt5.15.2+Linux5.15.0_编译手册_V1.0_20230820
    发表于 01-23 16:23 0次下载

    如何构建linux开发环境和编译软件工程、应用程序

    前文介绍了如何使用官方提供的镜像文件启动开发板,本文将说明如何构建linux开发环境和编译软件工程、应用程序
    的头像 发表于 01-03 12:31 1932次阅读
    如何构建<b class='flag-5'>linux</b>开发环境和<b class='flag-5'>编译</b>软件工程、应用<b class='flag-5'>程序</b>

    飞凌嵌入式OK-D9360-C开发板用户编译手册_V1.0

    OK-D9360-C_Linux4.14.61+Qt5.15.2_用户编译手册
    发表于 12-19 09:34 8次下载

    【从0开始创建AWTK应用程序编译应用到嵌入式Linux平台运行

    。搭建Linux平台交叉编译环境在上一篇文章我们介绍了使用AWTK开发简单的应用并在PC上模拟运行,本篇文章就来介绍一怎么让应用程序运行在嵌入式L
    的头像 发表于 12-07 12:08 668次阅读
    【从0开始创建AWTK应用<b class='flag-5'>程序</b>】<b class='flag-5'>编译</b>应用到嵌入式<b class='flag-5'>Linux</b>平台运行

    c程序的运行环境和运行c程序的方法

    程序的运行需要依赖操作系统提供的支持。常见的操作系统包括Windows、Linux、macOS等。不同的操作系统对于文件系统、网络和硬件设备的操作方式有所差异,因此需要针对特定的操作系统进行编程和调试。 编译器:
    的头像 发表于 11-27 16:00 1999次阅读

    为什么C语言要进行编译

    为什么我们编写的C语言要进行编译?什么是编译编译时发生了什么? 机器无法理解我们编写的C语言,而编译
    的头像 发表于 11-24 15:47 1249次阅读
    为什么<b class='flag-5'>C</b>语言要进行<b class='flag-5'>编译</b>

    c语言源程序main函数的位置

    理解C语言程序的执行过程。 C语言程序的执行过程可以简单概括为以下几个步骤: 扫描源代码:在程序执行前,
    的头像 发表于 11-24 10:23 2307次阅读