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.pswp.cn/news/395022.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/395022.shtml
英文地址,請注明出處:http://en.pswp.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 專業版的商業…