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
如有必要,还需回答出细分的几个步骤:
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
编译运行:
上面更细分编译过程的Makefile文件如下:
关于make及Makefile更多内容可查阅:
【Linux笔记】make工程管理工具(一)
【Linux笔记】make工程管理工具(二)
三、借助CMake生成Makefile
实际开发很少会像上面一样自己编写Makefile文件,可借助cmake工具来生成。
CMake是一个跨平台的安装(编译)工具,可以用简单的语句来描述所有平台的安装(编译过程)。
1、命令行操作
首先输入cmake --version命令查看cmake版本,若还没安装则执行如下命令安装:
sudo apt install cmake
下面开始实验演示。我们的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文件:
mkdir build # 创建build文件夹cd build # 进入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图形化工具。若未安装可输入如下命令进行安装:
sudo apt install cmake-qt-gui
如:
启动cmake-gui:
查看cmake-gui_test文件夹:
编译运行:
以上分享了一些编译的过程及方法,都是基础内容,需要熟练掌握。如果觉得文章对你有帮助,可以从原文渠道转发~
如果你也希望提升你的编程能力,了解C/C++ Linux更多知识,点击下方【了解更多】,接受牛人大牛们的指导,听听他们对写代码的建议,一起快乐学习,共同进步~
c gui qt 4编程第二版_面试官问Linux下如何编译C程序,如何回答?为你编译演示相关推荐
- c gui qt 4编程第二版_一本专门学习PyQt5 GUI编程的书
Python作为一个开源的解释型编程软件,在教学.科研.实际项目中用得越来越多.Python易学易用,程序资源丰富,在编程解决一些科学计算问题时比较实用,但是Python自带的Tkinter包设计GU ...
- c gui qt 4编程第二版_我的QT5学习之路(一)——浅谈QT的安装和配置
一.前言 说到Qt,不能不说到C++,这门伟大的语言.因为其面向对象的编程思想和陡峭的学习曲线,一开始学习起来很是吃力.Qt从QT4开始基本封装了很多C++的工具库和界面库,而且支持跨平台,这是它最大 ...
- java执行sql文件_面试官问你MyBatis SQL是如何执行的?把这篇文章甩给他
初识 MyBatis MyBatis 是第一个支持自定义 SQL.存储过程和高级映射的类持久框架.MyBatis 消除了大部分 JDBC 的样板代码.手动设置参数以及检索结果.MyBatis 能够支持 ...
- redis怎么修改_面试官问我Redis事务,还问我有哪些实现方式
❝ 「第12期」 距离大叔的80期小目标还有68期,今天大叔要跟大家分享的内容是 -- Reids中的事务.同样,这也是redis中重要指数为四颗星的必备基础知识点.下面一起来了解一下吧. ❞ 相信大 ...
- 冒泡排序java代码_面试官问我插入排序和冒泡排序哪个更牛逼?
(给算法爱好者加星标,修炼编程内功) 来源:小鹿动画学编程,作者:小鹿同学 写在前边 排序对于每个开发者来讲,都多多少少知道几个经典的排序算法,比如我们之前以动画形式分享的冒泡排序,也包括今天要分享的 ...
- sql参数化还是被注入了_面试官问你 SQL 注入攻击了吗?
目录 为什么要聊 SQL 注入攻击? 什么是 SQL 注入攻击? 如何进行 SQL 注入攻击? 如何防范? 常见面试题 瞎比比 为什么要聊 SQL 注入攻击? 我这人有个想法,就是不管自己跳不跳槽,每 ...
- 16 bit float 存储_面试官问我存储金额应该用哪种数据类型,我竟这样回答
前言 最近在面试时,碰到这样一个问题:在问到项目部分时,面试官问我:你的项目中用到的分数.金额之类的数字是用的什么数据类型? 我没有过多思考脱口而出:double!随后面试官又问:为啥不用floa ...
- 简述ip地址的abc类如何划分_面试官问:讲讲IP地址的分配原理
网络模型介绍 在计算机网络中有著名的OSI七层协议体系结构,概念清楚,理论完整,但是它既复杂又不实用.TCP/IP体系结构则不同,得到了广泛的应用.最终结合OSI和TCP/IP的优点,采用了一种只有五 ...
- hashmap扩容_面试官问:HashMap在并发情况下为什么造成死循环?一脸懵
这个问题是在面试时常问的几个问题,一般在问这个问题之前会问Hashmap和HashTable的区别?面试者一般会回答:hashtable是线程安全的,hashmap是线程不安全的. 那么面试官就会紧接 ...
最新文章
- 第5章-无人机UAV模型分析
- Alpha冲刺Day5
- delete 误删了全表数据
- System.getProperty()参数
- 全国携号转网下月底实现 三大运营商狂推多种优惠套餐
- cc1101初始化c语言程序,cc1101无线模块的程序及使用介绍
- 智能家居火了这么久 何时到我家?
- Tensorflow中的RNN个人备忘
- 5月2日下午学习日志
- VideoPlayer参数
- PowerBI使用Tabular Editor翻译报表模型
- 数字信号处理经典书籍
- vue3实现鼠标左键拖拽画矩形框框选功能
- 小话设计模式(番外二)委托模式
- 应届生入职半年被裁员了,我该怎么办?
- 1.8 faker简单应用
- Featured Domains
- 宇宙历史简介(地址纪元)
- 企业IT架构转型之道:阿里巴巴中台战略思想与架构实战. 2.4 赋予业务快速创新和试错能力...
- 常用的软件测试工具清单,建议收藏。