c gui qt 4编程第二版_面试官问Linux下如何编译C程序,如何回答?为你编译演示

文章来源:嵌入式大杂烩

作者:ZhengNL

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

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

hello.c示例代码:

#include int main(void){  printf("Hello world"); return 0;}

编译:

gcc hello.c -o hello
33c45959057b1195636a8eac77b9ab52.png

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

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

编译运行:

788e3052d484694d2db49999560a5456.png

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

f5e8ea35cfb749dc0eaac1ed9bc4b530.png

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

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

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

三、借助CMake生成Makefile

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

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

1、命令行操作

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

sudo apt install cmake
03f8c8a815c0a3c9dcf48b05a85244d9.png

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

63741b6a16cbcf2845cda2580ccbf334.png

输入如下内容:

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

执行结果如下:

92d86ed91148eeb855a61291cd486ec4.png

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

2、使用cmake-gui

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

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

767ceca6bb65f36111d2176faf9ddbb1.png

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

sudo apt install cmake-qt-gui

如:

cc7d8e3f9a4a5a8f0c50cbf895c16b5f.png

启动cmake-gui:

ca2b5ac022d0032d3c1facdbe4606f19.png
f45ecfaa6c31ec1a9ee1ee8971e32f88.png
a908bc9691b3d0a750298c1069f4acfc.png

查看cmake-gui_test文件夹:

4cd2d016532fcbc8ced3e02aa817694d.png

编译运行:

f9a18807e08c8ee3688875612a43af52.png

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

如果你也希望提升你的编程能力,了解C/C++ Linux更多知识,点击下方【了解更多】,接受牛人大牛们的指导,听听他们对写代码的建议,一起快乐学习,共同进步~

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/395022.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Python基础-----列表、元组、集合(2)

raw_input ##字符类型input##数值类型##格式化输出注释切片s[2:5]##切片从2开始到5,不包括5[kioskfoundation39 mnt]$ pythonPython 2.7.5 (default, Oct 11 2015, 17:47:16) [GCC 4.8.3 20140911 (Red Hat 4.8.3-9)] on linux2Type "help", "copyri…

调用lambda_如何使用Lambda调用上下文动态设置超时

调用lambdaby Yan Cui崔燕 如何使用Lambda调用上下文动态设置超时 (How to set timeouts dynamically using Lambda invocation context) With API Gateway and Lambda, you’re forced to use short timeouts on the server-side:使用API​​ Gateway和Lambda,您不…

php+tp框架+API,php - tp框架能开发API接口吗

怪我咯2017-04-10 17:12:231楼TP的controller其实有很多种的HproseController,JsonRpcController,RestController,RpcController,YarController我拿RestController给你介绍一下RESTFul方法的操作方法定义主要区别在于,需要对请求类型和资源类型进行判断,…

OTL翻译(9) --常量的SQL语句

常量的SQL语句 一个没有绑定变量的SQL语句、SQL语句块或是存储过程就被称为常量的SQL语句。OTL通过一个静态的函数来执行这样的SQL语句。 例如: // static otl_cursor::direct_exec()otl_cursor::direct_exec(db, // connect object"create table test_tab(f1 …

[HNOI2016]网络 树链剖分,堆

[HNOI2016]网络 LG传送门 表示乱搞比正解难想。 整体二分很好想吧。 但是为了好写快乐,我们选择三个\(\log\)的乱搞。 先树剖,线段树套堆维护区间最大值。对于一次修改,如果是插入,就把树上除了这条链的地方加上这个重要度&#x…

python压缩文件为zip-python 压缩文件为zip后删除原文件

压缩.log 文件为zip后删除原文件 需要注意:本人作为小白,该脚本需要和.log在一起,后面有时间需要改正。 #!/usr/local/python/bin/python #-*-codingutf8 -*- import time import os import sys import zipfile N 7 #设置删除多少天前的文件…

css text-align-last设置末尾文本对齐方式

text-align-last:auto | start | end | left | right | center | justify auto: 无特殊对齐方式。 left: 内容左对齐。 center: 内容居中对齐。 right: 内容右对齐。 justify: 内容两端对齐。 start&#x…

后端开发除了编码还要做什么_每个开发人员都应掌握的基本技能(除了编码)

后端开发除了编码还要做什么Whether you are learning to code, looking for a new job, or just want to improve your skills as a developer, you need to master the essential tools of team collaboration. These are as important as knowing how to code.无论您是学习编…

Python中的defaultdict方法

字典(dictionary)是Python中一种常用的数据类型。不同于其他由数字索引的序列,字典是用"键"(key)来索引的。通常表示为dict(key: val, ...),有以下特征: 键可以是任何不可变&#xff…

git撤销commit 并保存之前的修改

撤销并保留修改 参数 –soft # 先进行commit &#xff0c;之后后悔啦$ git commit -am "对首篇报告研究员字段改为author_name"执行git log $ git logcommit 3d6788f577faba5e1d408e372031c81beee79749Author: yous <yous.com>Date: Thu Dec 14 10:08:36 2017 …

php替换中文,PHP中文替换

//定义编码header( Content-Type:text/html;charsetutf-8 );$wordsarray(我,你,他);$content"测一测我是不是违禁词";$bannedgenerateRegularExpression($words);//检查违禁词$res_bannedcheck_words($banned,$content);write_html($content,$res_banned);/*** descr…

secoclient隧道保活超时或协商超时_推荐:承德市隧道led大屏厂家电话【联丰智慧科技】...

通过为大型隧道施工建设搭建全覆盖式的定位&#xff0c;可以有效施工的效率、项目现场的保障能力。安装隧道门禁能解决哪些问题&#xff1f;近年来&#xff0c;我国交通建设正处于高速发展的阶段&#xff0c;在交通建设中&#xff0c;工程安防工作也越发受到&#xff0c;越来越…

JavaScript Essentials:如何为循环而烦恼

by Zell Liew由Zell Liew JavaScript Essentials&#xff1a;如何为循环而烦恼 (JavaScript Essentials: how to wrap your head around for loops) Let’s say you want to run a function, bounceBall, four times. How would you do it? Like this?假设您要运行一次功能b…

python中的类的成员变量以及property函数

1 python类的各种变量 1.1 全局变量 在类外定义的变量。 1.2 类变量 定义在类里面&#xff0c;所有的函数外面的变量。这个变量只有一份&#xff0c;是所有的对象共有的。在类外用“类.”来引用。 1.3 实例变量 用self.xxx在类的任何函数中定义的变量就是实例变量。在类内用“s…

C++常用的系统函数

数学<math.h>&#xff1a; 1 三角函数 double sin (double); double cos (double); double tan (double); 2 反三角函数 double asin (double); 结果介于[-PI/2, PI/2] double acos (double); 结果介于[0, PI] double atan (double); 反正切(主值), 结果介于[-PI/2, PI/2…

网页特效java代码,美化网页常用特效代码

1&#xff0e;让文字不停地滚动&#xff1c;MARQUEE&#xff1e;滚动文字&#xff1c;/MARQUEE&#xff1e;2&#xff0e;记录并显示网页的最后修改时间&#xff1c;script languageJavaScript&#xff1e;document.write("最后更新时间: " document.lastModified …

作业,两次实验

实验一&#xff1a; 1 编程打印5行的倒三角形&#xff0c;第一行打印9个*&#xff0c;第二行7个*&#xff0c;……第5行打印1个* #include<stdio.h>int main(){printf("*********\n *******\n *****\n ***\n *\n");return 0;} 总结 注意换行以及位置的…

javaweb和ajax使用查询出来的数据做下拉菜单_区块链浏览器实用指南篇:利用链上数据把握减半行情...

进入2020年&#xff0c;加密货币市场最热的话题当属“减半”了。在减半行情的推动下&#xff0c;以BTC为首的减半币种展现出了极强的上行趋势。如何抓住这一波行情&#xff0c;评估正确时机&#xff1f;当然&#xff0c;这个问题的答案可以说是争议纷纷&#xff0c;但有一个参考…

纯函数式编程语言_纯功能编程语言如何改变您的生活。

纯函数式编程语言by Andrea Zanin由Andrea Zanin 纯功能编程语言如何改变您的生活。 (How a purely functional programming language can change your life.) I believe everyone should learn Haskell, even if you won’t use it in your work. It’s beautiful, and it ch…

Win10 教育版

Windows 10 版本 1607 引入了专为 K-12 机构的特有需求而设计的两个版本&#xff1a;Windows 10 专业教育版和 Windows 10 教育版。 这些版本为不断发展的 K-12 教育 IT 环境提供特定于教育的默认设置。Windows 10 专业教育版Windows 10 专业教育版基于 Windows 10 专业版的商业…