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

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

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

Linux下如何編譯C程序?

Q4MP_gh_c472c21 ? 來源:嵌入式大雜燴 ? 2020-09-20 10:56 ? 次閱讀

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

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

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程序編譯過程》

二、借助make來編譯

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

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

hello:hello.c gcchello.c-ohello

編譯運(yùn)行:

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

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

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

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

三、借助CMake生成Makefile

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

CMake是一個(gè)跨平臺的安裝(編譯)工具,可以用簡單的語句來描述所有平臺的安裝(編譯過程)。

1、命令行操作

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

sudoaptinstallcmake

下面開始實(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文件具體語法感興趣的朋友可自行查閱資料進(jìn)行學(xué)習(xí)。

2、使用cmake-gui

上述是在命令行下使用cmake生成Makefile進(jìn)行進(jìn)行編譯的方法。我們也可以使用圖形化界面來生成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)行:

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

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

    關(guān)注

    5059

    文章

    18973

    瀏覽量

    302042
  • Linux
    +關(guān)注

    關(guān)注

    87

    文章

    11207

    瀏覽量

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

    關(guān)注

    4

    文章

    254

    瀏覽量

    35967

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

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

收藏 人收藏

    評論

    相關(guān)推薦

    linux開發(fā)板如何編譯curl

    Linux開發(fā)板上編譯 curl 庫通常涉及到幾個(gè)步驟,包括準(zhǔn)備開發(fā)環(huán)境、下載源代碼、配置編譯選項(xiàng)以及執(zhí)行編譯和安裝過程。以下是一個(gè)基本的指南,幫助你在
    的頭像 發(fā)表于 08-30 15:33 ?432次閱讀

    linux驅(qū)動(dòng)程序編譯方法是什么

    Linux驅(qū)動(dòng)程序編譯方法主要包括兩種: 與內(nèi)核一起編譯編譯成獨(dú)立的內(nèi)核模塊 。以下是對這兩種方法的介紹: 一、與內(nèi)核一起
    的頭像 發(fā)表于 08-30 14:46 ?359次閱讀

    linux驅(qū)動(dòng)程序編譯方法有哪兩種

    Linux驅(qū)動(dòng)程序編譯方法主要可以歸納為兩種: 手動(dòng)編譯 和 使用內(nèi)核構(gòu)建系統(tǒng)(Makefile)自動(dòng)編譯 。 1. 手動(dòng)
    的頭像 發(fā)表于 08-30 14:39 ?468次閱讀

    飛凌嵌入式ElfBoard ELF 1板卡-Linuxi2c-tools的交叉編譯

    Linuxi2c-tools的交叉編譯1.下載地址:https://archive.kernel.org/oldwiki/i2c.wiki
    發(fā)表于 06-19 09:41

    嵌入式Linux C語言編程程序調(diào)試與宏定義

    Linux使用gcc編譯程序的時(shí)候,對于調(diào)試的語句還具有一些特殊的語法。gcc編譯的過程中,會(huì)生成一些宏,可以使用這些宏分別打印當(dāng)前源文件的信息,主要內(nèi)容是當(dāng)前的文件、當(dāng)前運(yùn)行的函數(shù)和當(dāng)前的
    發(fā)表于 03-01 11:41 ?855次閱讀

    如何使用linuxgdb來調(diào)試python程序

    如何使用linuxgdb來調(diào)試python程序? 在Linux,可以使用GDB(GNU調(diào)試器)來調(diào)試Python
    的頭像 發(fā)表于 01-31 10:41 ?2371次閱讀

    OK3568-C開發(fā)板_AMP_Linux4.19.232+QT5.15.8_用戶編譯手冊_V1.0

    OK3568-C_AMP_Linux4.19.232+QT5.15.8_用戶編譯手冊_V1.0_20231227
    發(fā)表于 01-23 16:28 ?11次下載

    賽昉系列:OK7110-C_Qt5.15.2+Linux5.15.0_編譯手冊_V1.0

    OK7110-C_Qt5.15.2+Linux5.15.0_編譯手冊_V1.0_20230820
    發(fā)表于 01-23 16:23 ?0次下載

    如何構(gòu)建linux開發(fā)環(huán)境和編譯軟件工程、應(yīng)用程序

    前文介紹了如何使用官方提供的鏡像文件啟動(dòng)開發(fā)板,本文將說明如何構(gòu)建linux開發(fā)環(huán)境和編譯軟件工程、應(yīng)用程序。
    的頭像 發(fā)表于 01-03 12:31 ?1872次閱讀
    如何構(gòu)建<b class='flag-5'>linux</b>開發(fā)環(huán)境和<b class='flag-5'>編譯</b>軟件工程、應(yīng)用<b class='flag-5'>程序</b>

    飛凌嵌入式OK-D9360-C開發(fā)板用戶編譯手冊_V1.0

    OK-D9360-C_Linux4.14.61+Qt5.15.2_用戶編譯手冊
    發(fā)表于 12-19 09:34 ?8次下載

    【從0開始創(chuàng)建AWTK應(yīng)用程序編譯應(yīng)用到嵌入式Linux平臺運(yùn)行

    。搭建Linux平臺交叉編譯環(huán)境在上一篇文章我們介紹了使用AWTK開發(fā)簡單的應(yīng)用并在PC上模擬運(yùn)行,本篇文章就來介紹一怎么讓應(yīng)用程序運(yùn)行在嵌入式L
    的頭像 發(fā)表于 12-07 12:08 ?649次閱讀
    【從0開始創(chuàng)建AWTK應(yīng)用<b class='flag-5'>程序</b>】<b class='flag-5'>編譯</b>應(yīng)用到嵌入式<b class='flag-5'>Linux</b>平臺運(yùn)行

    c程序的運(yùn)行環(huán)境和運(yùn)行c程序的方法

    程序的運(yùn)行需要依賴操作系統(tǒng)提供的支持。常見的操作系統(tǒng)包括Windows、Linux、macOS等。不同的操作系統(tǒng)對于文件系統(tǒng)、網(wǎng)絡(luò)和硬件設(shè)備的操作方式有所差異,因此需要針對特定的操作系統(tǒng)進(jìn)行編程和調(diào)試。 編譯器:
    的頭像 發(fā)表于 11-27 16:00 ?1954次閱讀

    為什么C語言要進(jìn)行編譯

    為什么我們編寫的C語言要進(jìn)行編譯?什么是編譯?編譯時(shí)發(fā)生了什么? 機(jī)器無法理解我們編寫的C語言,而編譯
    的頭像 發(fā)表于 11-24 15:47 ?1200次閱讀
    為什么<b class='flag-5'>C</b>語言要進(jìn)行<b class='flag-5'>編譯</b>

    c語言源程序main函數(shù)的位置

    理解C語言程序的執(zhí)行過程。 C語言程序的執(zhí)行過程可以簡單概括為以下幾個(gè)步驟: 掃描源代碼:在程序執(zhí)行前,
    的頭像 發(fā)表于 11-24 10:23 ?2255次閱讀

    C程序的完整編譯過程

    本文討論了C程序的完整編譯過程,分別講述了預(yù)處理、編譯、匯編、鏈接各階段完成的編譯任務(wù)。然后通過一個(gè)編譯
    的頭像 發(fā)表于 11-15 17:14 ?2795次閱讀
    <b class='flag-5'>C</b><b class='flag-5'>程序</b>的完整<b class='flag-5'>編譯</b>過程