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)不再提示

gcc的使用方法以及Linux gcc 的常用選項(xiàng)

嵌入式星球 ? 來(lái)源:嵌入式星球 ? 作者:嵌入式星球 ? 2020-10-22 14:42 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

gcc的使用方法

gcc 【選項(xiàng)】文件名

gcc常用選項(xiàng)

gcc

-v: 查看gcc編譯器的版本,顯示gcc執(zhí)行時(shí)的詳細(xì)過(guò)程

-o please the output into

指定文件名為file,這個(gè)名稱不能和源文件名相同

-E preprocess only :do not compile ,assemble or link

只預(yù)處理 ,不會(huì)編譯,匯編,鏈接

-S compile only:do not assemble or link

只編譯,不會(huì)編譯,匯編,鏈接

//==============================================================

gcc -v :查看gcc編譯器的版本

方式一:

gcc hello.c 輸出一個(gè)./a.out,然后./a.out來(lái)執(zhí)行這個(gè)應(yīng)用程序。gcc -ohello hello.c輸出hello ,然后./hello 來(lái)執(zhí)行這個(gè)程序。

方式二:

gcc -E -ohello.ihello.c

gcc -S -ohello.shello.i

gcc -c -ohello.ohello.s

gcc -ohellohello.o

.o:objet file (OBJ文件)

小結(jié):1)輸入文件的后綴名和選項(xiàng)共同決定gcc到底執(zhí)行哪些操作;2)在編譯過(guò)程中,除非是使用了-E,-S,-c選項(xiàng)(或者編譯過(guò)程中出錯(cuò)阻止了編譯過(guò)程否則最后的步驟都是鏈接)。

方式三:

gcc-c-ohello.ohello.c

gcc -o hello hello

gcc 會(huì)對(duì).c文件默認(rèn)進(jìn)行預(yù)處理操作,-c再來(lái)指明編譯,匯編,從而得到了.o文件

再來(lái)通過(guò)gcc -o hello hello.o 將.o文件進(jìn)行鏈接,得到可執(zhí)行應(yīng)用程序

//======================================================

補(bǔ)充:

gcc -c -o hello.o hello.c

gcc -o hello hello.o

gcc會(huì)對(duì).c文件默認(rèn)進(jìn)行預(yù)處理操作,-c再來(lái)指明編譯,匯編從而得到.o文件。再通過(guò)gcc -o hello hello.o將.o文件進(jìn)行鏈接,從而得到可執(zhí)行文件。鏈接就是將匯編生成的OBJ文件,系統(tǒng)庫(kù)的OBJ文件,庫(kù)文件鏈接起來(lái)。最終生成可以在特定平臺(tái)的可執(zhí)行程序。

crtl.o ,crti.o ,crtbegin.o , crth.o是加入的系統(tǒng)標(biāo)準(zhǔn)啟動(dòng)文件,對(duì)于一般的應(yīng)用程序,這些啟動(dòng)是必須的。

-lc :鏈接libc庫(kù)文件, 其中l(wèi)ibc庫(kù)文件中就實(shí)現(xiàn)了printf等函數(shù)

gcc -v -nostdlib -ohello hello.o會(huì)提示因?yàn)闆](méi)有鏈接系統(tǒng)標(biāo)準(zhǔn)啟動(dòng)文件和標(biāo)準(zhǔn)庫(kù)文件,而鏈接失敗。這個(gè) -nostdlib選項(xiàng)常用于裸機(jī)的/boot loader,linux內(nèi)核等程序,因?yàn)樗麄儾恍枰獑?dòng)文件,標(biāo)準(zhǔn)庫(kù)文件。一般應(yīng)用程序才需要系統(tǒng)標(biāo)準(zhǔn)啟動(dòng)文件和標(biāo)準(zhǔn)庫(kù)文件 。裸機(jī)/boot loader,linux內(nèi)核等不需要啟動(dòng)文件,標(biāo)準(zhǔn)庫(kù)文件動(dòng)態(tài)鏈接使用動(dòng)態(tài)鏈接庫(kù)進(jìn)行鏈接,生成的程序執(zhí)行的時(shí)候需要加載所需的動(dòng)態(tài)庫(kù)才能運(yùn)行動(dòng)態(tài)鏈接生成的程序體積較小,但是必須依賴所需要的動(dòng)態(tài)庫(kù),否則無(wú)法執(zhí)行靜態(tài)鏈接使用靜態(tài)庫(kù)進(jìn)行鏈接,生成的程序包含程序運(yùn)行所需要的全部庫(kù),可以直接運(yùn)行,不過(guò)靜態(tài)鏈接生成的程序體積較大。

fqj

聲明:本文內(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)投訴
  • Linux
    +關(guān)注

    關(guān)注

    88

    文章

    11760

    瀏覽量

    219046
  • 編譯器
    +關(guān)注

    關(guān)注

    1

    文章

    1672

    瀏覽量

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

掃碼添加小助手

加入工程師交流群

    評(píng)論

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

    CW32系列MCU在Eclipse GCC + JLink下的使用示例分享

    CW32系列MCU在Eclipse GCC + JLink下的使用示例: 1、下載安裝Eclipse IDE for Embedded C/C++ Developers。 2、下載安裝
    發(fā)表于 02-02 06:57

    GCC -O0?編譯內(nèi)核:調(diào)試黨的?“救命神器”,這些優(yōu)勢(shì)?90%?開(kāi)發(fā)者沒(méi)吃透!

    在?Linux?內(nèi)核開(kāi)發(fā)、驅(qū)動(dòng)調(diào)試或內(nèi)核問(wèn)題定位的場(chǎng)景中,“編譯優(yōu)化等級(jí)”?是個(gè)容易被忽略卻影響巨大的選擇。GCC?的優(yōu)化等級(jí)從?O0?到?O3、Os、Ofast?各有側(cè)重,而 O0(默認(rèn)優(yōu)化等級(jí)
    的頭像 發(fā)表于 12-03 07:05 ?615次閱讀
    <b class='flag-5'>GCC</b> -O0?編譯內(nèi)核:調(diào)試黨的?“救命神器”,這些優(yōu)勢(shì)?90%?開(kāi)發(fā)者沒(méi)吃透!

    GCC開(kāi)發(fā)工程的模版

    的cw32f030.h以及system_cwl083.h。 5、Libraries/CMSIS/Device/startup_cw32f030_gcc.s重命名為startup_cw32l083_gcc.s。 6
    發(fā)表于 11-28 08:15

    如何利用 gcc 編譯Ccode?

    最近在玩e203_hbirdv2,利用默認(rèn)的case 可以仿真。現(xiàn)在想自己寫(xiě)C code 進(jìn)行仿真,請(qǐng)問(wèn)該如何利用 gcc 編譯?有沒(méi)有 詳細(xì)的教程。
    發(fā)表于 11-05 12:37

    gcc工具鏈無(wú)法匯編硬件浮點(diǎn)指令fsqrt問(wèn)題

    團(tuán)隊(duì)在項(xiàng)目推進(jìn)過(guò)程中發(fā)現(xiàn),Linux環(huán)境下,math庫(kù)中的sqrt()函數(shù)無(wú)論是在浮點(diǎn)數(shù)的gcc工具鏈中還是整數(shù)的gcc工具鏈中,綜合的結(jié)果都是以整數(shù)指令來(lái)模擬。 若果想要進(jìn)一步地節(jié)約時(shí)間,我們
    發(fā)表于 10-20 06:19

    飛凌嵌入式ElfBoard-Vim編輯器之GCC的基本使用

    /example/hello$ gcc hello.c1.GCC編譯過(guò)程GCC編譯器的編譯過(guò)程要經(jīng)過(guò)預(yù)處理,編譯,匯編,鏈接等4步才能夠生成可執(zhí)行文件。預(yù)處理:主要實(shí)現(xiàn)將頭文件展開(kāi),宏定義替換
    發(fā)表于 10-16 09:05

    飛凌嵌入式ElfBoard-Vim編輯器之GCC編譯器的安裝

    GCC,但軟件包可能不全,為了確保有一個(gè)基本完善的本地編譯環(huán)境,可安裝build-essential軟件包。在確保Linux能聯(lián)網(wǎng)的情況下,在終端輸入如下安裝命令: elf@ubuntu:~$ sudo
    發(fā)表于 10-15 08:44

    RT1052的gcc后的bin執(zhí)行異常怎么解決?

    項(xiàng)目原來(lái)一直都是keil在編譯的,但是現(xiàn)在有自動(dòng)化測(cè)試的需求,需要gcc編譯bin文件,但是我搞了1個(gè)月了gcc出來(lái)的bin總是莫名其妙跑飛,什么lds,startup文件我都重寫(xiě)好幾遍了,有沒(méi)有
    發(fā)表于 09-28 10:53

    cubemx+clion+gcc無(wú)法使用msh怎么解決?

    通過(guò)STM32CUMX配置RTTHREAD NANO ,用keil編譯并且移植shell之后,輸入鍵盤(pán)上下鍵無(wú)反應(yīng),而用clion+gcc編譯后(修改過(guò)啟動(dòng)文件),只能打印version信息,無(wú)法顯示msh和輸入,兩者除了啟動(dòng)文件以外,其余的配置基本相同,請(qǐng)問(wèn)為啥gcc
    發(fā)表于 09-23 07:36

    為什么將 GCC 項(xiàng)目導(dǎo)入 NuEclipse 失敗?

    為什么將 GCC 項(xiàng)目導(dǎo)入 NuEclipse 失?。?/div>
    發(fā)表于 09-01 08:05

    如何將GCC項(xiàng)目導(dǎo)入NuEclipse?

    如何將GCC項(xiàng)目導(dǎo)入NuEclipse?
    發(fā)表于 09-01 07:04

    CW32L010 MCU在VSCode+GCC+EIDE+JLink下的使用示例

    CW32L010 MCU 在VSCode+GCC+ EIDE + JLink 下的使用示例: 1、點(diǎn)擊VSCode左邊欄中的Extensions,在EXTENSIONS:MARKETPLACE搜索
    的頭像 發(fā)表于 07-01 14:52 ?1034次閱讀
    CW32L010 MCU在VSCode+<b class='flag-5'>GCC</b>+EIDE+JLink下的使用示例

    cubemx+clion+gcc無(wú)法使用msh怎么解決?

    通過(guò)STM32CUMX配置RTTHREAD NANO ,用keil編譯并且移植shell之后,輸入鍵盤(pán)上下鍵無(wú)反應(yīng),而用clion+gcc編譯后(修改過(guò)啟動(dòng)文件),只能打印version信息,無(wú)法顯示msh和輸入,兩者除了啟動(dòng)文件以外,其余的配置基本相同,請(qǐng)問(wèn)為啥gcc
    發(fā)表于 06-13 08:17

    使用gcc編譯成功后,如何燒錄?

    使用gcc編譯成功后,如何燒錄。 scons 命令嗎?
    發(fā)表于 04-30 07:13

    BSP36 gcc_11.3.0編譯錯(cuò)誤的原因?怎么解決?

    /gcc/11.3.0-r0/recipe-sysroot-native/usr/bin/aarch64-fsl-linux/../../libexec/aarch64-fsl-linux/g
    發(fā)表于 03-27 08:19