91欧美超碰AV自拍|国产成年人性爱视频免费看|亚洲 日韩 欧美一厂二区入|人人看人人爽人人操aV|丝袜美腿视频一区二区在线看|人人操人人爽人人爱|婷婷五月天超碰|97色色欧美亚州A√|另类A√无码精品一级av|欧美特级日韩特级

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫(xiě)文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

Linux下如何編譯C程序?

Q4MP_gh_c472c21 ? 來(lái)源:嵌入式大雜燴 ? 2020-09-20 10:56 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

Windows下常用IDE來(lái)編譯,Linux下直接使用gcc來(lái)編譯,編譯過(guò)程是Linux嵌入式編程的基礎(chǔ),也是嵌入式高頻基礎(chǔ)面試問(wèn)題。

一、命令行編譯及各個(gè)細(xì)分編譯過(guò)程

hello.c示例代碼:

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

編譯:

gcchello.c-ohello

如有必要,還需回答出細(xì)分的幾個(gè)步驟:

gcc-Ehello.c-ohello.i#預(yù)處理階段 gcc-Shello.i-ohello.s#編譯階段 gcc-chello.s-ohello.o#匯編階段 gcchello.o-ohello#鏈接階段

具體細(xì)節(jié)可查往期筆記:《C程序編譯過(guò)程》

二、借助make來(lái)編譯

少量文件時(shí)可以使用上面方法編譯。源碼文件較多時(shí),可借用make工具。make通過(guò)解析Makefile文件來(lái)執(zhí)行一些gcc命令進(jìn)行編譯。

首先得創(chuàng)建一個(gè)Makefile文件,如:

hello:hello.c gcchello.c-ohello

編譯運(yùn)行:

上面更細(xì)分編譯過(guò)程的Makefile文件如下:

關(guān)于make及Makefile更多內(nèi)容可查閱:

【Linux筆記】make工程管理工具(一)

【Linux筆記】make工程管理工具(二)

三、借助CMake生成Makefile

實(shí)際開(kāi)發(fā)很少會(huì)像上面一樣自己編寫(xiě)Makefile文件,可借助cmake工具來(lái)生成。

CMake是一個(gè)跨平臺(tái)的安裝(編譯)工具,可以用簡(jiǎn)單的語(yǔ)句來(lái)描述所有平臺(tái)的安裝(編譯過(guò)程)。

1、命令行操作

首先輸入cmake --version命令查看cmake版本,若還沒(méi)安裝則執(zhí)行如下命令安裝:

sudoaptinstallcmake

下面開(kāi)始實(shí)驗(yàn)演示。我們的cmake_test文件夾下有一個(gè)hello.c文件,在同文件夾下創(chuàng)建一個(gè) CMakeLists.txt 文件:

輸入如下內(nèi)容:

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

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

mkdirbuild#創(chuàng)建build文件夾 cdbuild#進(jìn)入build文件夾 cmake../#在cmake_test文件夾下生成Makefile

執(zhí)行結(jié)果如下:

關(guān)于CMakeLists.txt文件具體語(yǔ)法感興趣的朋友可自行查閱資料進(jìn)行學(xué)習(xí)。

2、使用cmake-gui

上述是在命令行下使用cmake生成Makefile進(jìn)行進(jìn)行編譯的方法。我們也可以使用圖形化界面來(lái)生成Makefile文件。cmake-gui是cmake的一個(gè)圖形化工具。下面依舊以實(shí)例作為演示。

我們把上一小節(jié)的CMakeLists.txt 與hello.c文件放入新創(chuàng)建的文件夾cmake-gui_test中:

在終端輸入 cmake-gui 命令啟動(dòng)cmake-gu圖形化工具。若未安裝可輸入如下命令進(jìn)行安裝:

sudoaptinstallcmake-qt-gui

如:

啟動(dòng)cmake-gui:

查看cmake-gui_test文件夾:

編譯運(yùn)行:

以上分享了一些編譯的過(guò)程及方法,都是基礎(chǔ)內(nèi)容,需要熟練掌握。如果覺(jué)得文章對(duì)你有幫助,歡迎轉(zhuǎn)發(fā)。

聲明:本文內(nèi)容及配圖由入駐作者撰寫(xiě)或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問(wèn)題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • 嵌入式
    +關(guān)注

    關(guān)注

    5199

    文章

    20451

    瀏覽量

    334227
  • Linux
    +關(guān)注

    關(guān)注

    88

    文章

    11761

    瀏覽量

    219071
  • C程序
    +關(guān)注

    關(guān)注

    4

    文章

    255

    瀏覽量

    37625

原文標(biāo)題:還能這樣用?Linux下如何編譯C程序?

文章出處:【微信號(hào):gh_c472c2199c88,微信公眾號(hào):嵌入式微處理器】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。

收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評(píng)論

    相關(guān)推薦
    熱點(diǎn)推薦

    Linux 開(kāi)發(fā)嵌入式必備命令速查表

    在嵌入式開(kāi)發(fā)中,Linux系統(tǒng)幾乎成為必備的開(kāi)發(fā)環(huán)境。不管你是在做STM32、RaspberryPi、還是基于ARM的板子,熟練掌握Linux命令不僅能加快開(kāi)發(fā)效率,還能讓你在調(diào)試、交叉編譯、文件
    的頭像 發(fā)表于 01-19 09:06 ?887次閱讀
    <b class='flag-5'>Linux</b> <b class='flag-5'>下</b>開(kāi)發(fā)嵌入式必備命令速查表

    別再迷糊了!Linux交叉編譯到底是個(gè)啥?一文講清楚

    很多工程師第一次聽(tīng)到“交叉編譯”這4個(gè)字時(shí),腦袋里往往會(huì)冒出兩個(gè)字: 抽象 。 明明寫(xiě)代碼寫(xiě)得好好的,為啥還要搞一個(gè)“交叉”?編譯不就是把源代碼變成可執(zhí)行程序嗎,難道還會(huì)繞幾個(gè)彎? 別急,今天我們
    的頭像 發(fā)表于 12-03 16:28 ?1013次閱讀
    別再迷糊了!<b class='flag-5'>Linux</b>交叉<b class='flag-5'>編譯</b>到底是個(gè)啥?一文講清楚

    基于 DR1M90 的 Linux-RT 內(nèi)核開(kāi)發(fā):從編譯配置到 GPIO / 按鍵應(yīng)用實(shí)現(xiàn)(1)

    本手冊(cè)由創(chuàng)龍科技研發(fā),針對(duì) DR1M90,詳述 Linux-RT 實(shí)時(shí)內(nèi)核開(kāi)發(fā):含實(shí)時(shí)性測(cè)試(LinuxLinux-RT 對(duì)比、CPU 空載 / 滿(mǎn)負(fù)荷 / 隔離狀態(tài)測(cè)試)、內(nèi)核配置編譯
    的頭像 發(fā)表于 12-02 10:38 ?1189次閱讀
    基于 DR1M90 的 <b class='flag-5'>Linux</b>-RT 內(nèi)核開(kāi)發(fā):從<b class='flag-5'>編譯</b>配置到 GPIO / 按鍵應(yīng)用實(shí)現(xiàn)(1)

    Linux 交叉編譯實(shí)戰(zhàn):跑起來(lái)你的第一個(gè) STM32 程序

    很多開(kāi)發(fā)者第一次接觸STM32,總會(huì)被“交叉編譯”、“燒錄程序”等概念繞暈。其實(shí)方法很簡(jiǎn)單:在Linux配置交叉編譯環(huán)境,編寫(xiě)簡(jiǎn)單
    的頭像 發(fā)表于 11-24 19:04 ?820次閱讀
    <b class='flag-5'>Linux</b> <b class='flag-5'>下</b>交叉<b class='flag-5'>編譯</b>實(shí)戰(zhàn):跑起來(lái)你的第一個(gè) STM32 <b class='flag-5'>程序</b>

    Linux系統(tǒng)編譯C語(yǔ)言仿真蜂鳥(niǎo)E203(二)

    NUCLEI_TOOL_ROOT路徑,便于編譯的時(shí)候能夠找到其路徑的gcc工具鏈 NUCLEI_TOOL_ROOT=/home/ICer/Nuclei_Tools Nuclei_Tools文件夾下的gcc文件中
    發(fā)表于 10-24 13:38

    rtsmart開(kāi)啟C++特性支持后,工具鏈編譯內(nèi)核不通過(guò)怎么解決?

    各位大佬好,本人在rtsmart項(xiàng)目中需要使用C++11特性,在menuconfig那里配置了支持C++特性后,使用7.3.0版本的arm-linux-musleabi編譯
    發(fā)表于 09-29 07:49

    【HZ-T536開(kāi)發(fā)板免費(fèi)體驗(yàn)】2 - 交叉編譯倉(cāng)頡編程語(yǔ)言程序到開(kāi)發(fā)板運(yùn)行

    。 可以對(duì)前面的hello.cj進(jìn)行一交叉編譯: cjc test.cj --target aarch64-unknown-linux-gnu -o test1-B /usr
    發(fā)表于 07-16 21:27

    如何單獨(dú)編譯linux內(nèi)核?

    那套sdk?純linux sdk編譯方法見(jiàn)readmehttps://github.com/kendryte/k230_linux_sdk/ make linux
    發(fā)表于 07-11 08:06

    linux使用cyusbserial SDK錯(cuò)誤怎么解決?

    我使用的TI DLP3010EVM模塊是通過(guò)CY7C65215 芯片進(jìn)行控制的,我可以在win環(huán)境正常使用TI DLP的調(diào)試軟件或者使用cyusbserial SDK的vs程序完成對(duì)設(shè)備的控制
    發(fā)表于 06-03 07:46

    能否提供LinuxUSB轉(zhuǎn)SPI模式的測(cè)試程序?

    我已在 Linux 上成功配置了 CY7C65211 器件,使其在 USB 轉(zhuǎn) SPI 模式運(yùn)行。 使用 lsusb 命令,設(shè)備顯示如下:總線 003 設(shè)備 002:ID 04b4:0004
    發(fā)表于 05-22 06:16

    不借助Linux系統(tǒng),在Windows如何搭建ZMC900E交叉編譯環(huán)境

    嵌入式Linux系統(tǒng),由于系統(tǒng)資源的匱乏,通常無(wú)法安裝本地編譯器進(jìn)行本地開(kāi)發(fā),而需要在借助一臺(tái)主機(jī)進(jìn)行交叉開(kāi)發(fā)。一般情況,在主機(jī)安裝相應(yīng)的交叉編譯器,將在主機(jī)編
    的頭像 發(fā)表于 05-21 11:34 ?937次閱讀
    不借助<b class='flag-5'>Linux</b>系統(tǒng),在Windows<b class='flag-5'>下</b>如何搭建ZMC900E交叉<b class='flag-5'>編譯</b>環(huán)境

    Linux環(huán)境再升級(jí):PLIN驅(qū)動(dòng)程序正式發(fā)布

    PLIN驅(qū)動(dòng)程序現(xiàn)已正式發(fā)布,本文將展示如何安裝PLIN驅(qū)動(dòng)程序,以及如何在Linux環(huán)境進(jìn)行基本的PLIN通信操作,確保您能夠快速掌握并應(yīng)用這一新工具。
    的頭像 發(fā)表于 04-21 15:29 ?1061次閱讀
    <b class='flag-5'>Linux</b>環(huán)境再升級(jí):PLIN驅(qū)動(dòng)<b class='flag-5'>程序</b>正式發(fā)布

    Linux內(nèi)核編譯失???移動(dòng)硬盤(pán)和虛擬機(jī)的那些事兒

    Linux開(kāi)發(fā)中,編譯內(nèi)核是一項(xiàng)常見(jiàn)任務(wù),但不少開(kāi)發(fā)者在移動(dòng)硬盤(pán)或虛擬機(jī)環(huán)境嘗試時(shí)會(huì)遭遇失敗。本文將簡(jiǎn)要探討這些問(wèn)題的成因,并介紹一些虛擬機(jī)使用技巧,幫助大家更好地應(yīng)對(duì)相關(guān)問(wèn)題。在移動(dòng)硬盤(pán)里
    的頭像 發(fā)表于 04-11 11:36 ?1003次閱讀
    <b class='flag-5'>Linux</b>內(nèi)核<b class='flag-5'>編譯</b>失敗?移動(dòng)硬盤(pán)和虛擬機(jī)的那些事兒

    FPGA Verilog HDL語(yǔ)法之編譯預(yù)處理

    Verilog HDL語(yǔ)言和C語(yǔ)言一樣也提供了編譯預(yù)處理的功能?!?b class='flag-5'>編譯預(yù)處理”是Verilog HDL編譯系統(tǒng)的一個(gè)組成部分。Verilog HDL語(yǔ)言允許在
    的頭像 發(fā)表于 03-27 13:30 ?1443次閱讀
    FPGA Verilog HDL語(yǔ)法之<b class='flag-5'>編譯</b>預(yù)處理

    rtsmart開(kāi)啟C++特性支持后,工具鏈編譯內(nèi)核不通過(guò)怎么解決?

    各位大佬好,本人在rtsmart項(xiàng)目中需要使用C++11特性,在menuconfig那里配置了支持C++特性后,使用7.3.0版本的arm-linux-musleabi編譯
    發(fā)表于 03-10 08:06