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文件夹:

编译运行:

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

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

    关注

    5087

    文章

    19148

    浏览量

    306182
  • Linux
    +关注

    关注

    87

    文章

    11322

    浏览量

    209865
  • C程序
    +关注

    关注

    4

    文章

    255

    浏览量

    36068

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

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

收藏 人收藏

    评论

    相关推荐

    干货来喽!实用树莓派Linux编译指南

    不友好,有没有好的解决办法? 今天来分享一我的私藏干货——树莓派Linux编译编译好之后,开发板只需插到树莓派上连接电脑就可以直接用了,极其方便。 本文以树莓派为例,其他板子只要带
    的头像 发表于 12-18 16:31 138次阅读
    干货来喽!实用树莓派<b class='flag-5'>Linux</b><b class='flag-5'>编译</b>指南

    RZ T2H PCIe裸机程序开发和Linux的配置介绍

    ,还提供2个PCIe Gen3通道等高速外设。本文主要介绍PCIe外设的功能、裸机EP模式的程序开发、以及在Linux,如何编译网卡的流
    的头像 发表于 12-18 11:14 676次阅读
    RZ T2H PCIe裸机<b class='flag-5'>程序</b>开发和<b class='flag-5'>Linux</b><b class='flag-5'>下</b>的配置介绍

    实用树莓派Linux编译指南,打工人必备!

    不友好,有没有好的解决办法? 今天来分享一我的私藏干货——树莓派Linux编译编译好之后,开发板只需插到树莓派上连接电脑就可以直接用了,极其方便。 本文以树莓派为例,其他板子只要带
    的头像 发表于 12-17 16:19 780次阅读
    实用树莓派<b class='flag-5'>Linux</b><b class='flag-5'>编译</b>指南,打工人必备!

    C7000优化C/C++编译

    电子发烧友网站提供《C7000优化C/C++编译器.pdf》资料免费下载
    发表于 10-30 09:45 0次下载
    <b class='flag-5'>C</b>7000优化<b class='flag-5'>C</b>/<b class='flag-5'>C</b>++<b class='flag-5'>编译</b>器

    linux开发板如何编译curl

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

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

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

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

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

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

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

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

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

    写驱动模块时候linux内核Vscode中头文件报红,clangd插件实现函数自由跳转

    /usr/bin/clangd-15 3.用bear编译内核,即先下载bear再bear -- make..... 4.随便点击kernel的.c文件生成compile_commands.json 5.把
    的头像 发表于 05-31 09:11 1594次阅读
    写驱动模块时候<b class='flag-5'>linux</b>内核Vscode中头文件报红,clangd插件实现函数自由跳转

    C语言:嵌入式开发中的关键编译器角色

    嵌入式程序开发跟硬件密切相关,需要使用C语言来读写底层寄存器、存取数据、控制硬件等,C语言和硬件之间由编译器来联系,一些C标准不支持的硬件特
    发表于 04-26 14:53 654次阅读
    <b class='flag-5'>C</b>语言:嵌入式开发中的关键<b class='flag-5'>编译</b>器角色

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

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

    如何使用linuxgdb来调试python程序

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

    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 12次下载

    赛昉系列: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次下载