日本黄色一级经典视频|伊人久久精品视频|亚洲黄色色周成人视频九九九|av免费网址黄色小短片|黄色Av无码亚洲成年人|亚洲1区2区3区无码|真人黄片免费观看|无码一级小说欧美日免费三级|日韩中文字幕91在线看|精品久久久无码中文字幕边打电话

當(dāng)前位置:首頁 > > 充電吧
[導(dǎo)讀] 先來簡單談?wù)勆梢粋€(gè)可執(zhí)行文件所需要的過程 預(yù)處理(preprocessing)->編譯(compilation)->匯編(assembly)->連接(linking) 編譯:.c-

先來簡單談?wù)勆梢粋€(gè)可執(zhí)行文件所需要的過程

預(yù)處理(preprocessing)->編譯(compilation)->匯編(assembly)->連接(linking)

編譯:.c->.s 匯編:.s->.o 連接:多個(gè).o合并成一個(gè)可執(zhí)行文件。
在平常通過將上述四步統(tǒng)稱為“編譯”

接下來通過兩個(gè)簡單的例子來簡單分析Makefile

Makefile三大組成:目標(biāo)、依賴、命令

Makefile命令能被執(zhí)行條件。


目標(biāo)不存在 (對(duì)應(yīng)下面沒有hello這個(gè)文件) 依賴已更新 (對(duì)應(yīng)下面hello.c或a.c修改了)

如linux內(nèi)核中那么多文件,修改某個(gè)重新編譯某個(gè),重新連接所有!

hello:hello.c a.c
    gcc -o hello.c a.c

實(shí)際在裸機(jī)開發(fā)的運(yùn)用

led_on.bin : led_on.S
    arm-linux-gcc -g -c -o led_on.o led_on.S        #-g:加入調(diào)試信息 -c只編譯不連接
    arm-linux-ld -Ttext 0x0000000 -g led_on.o -o led_on_elf  #-Ttext 0x0000000:指定代碼段地址0.
    arm-linux-objcopy -O binary -S led_on_elf led_on.bin  #-O:使用指定格式來輸出文件
    # binary:二進(jìn)制的 -S:不從源文件復(fù)制重定位信息和符號(hào)信息到目標(biāo)文件中去
clean:
    rm -f   led_on.bin led_on_elf *.o

arm-linux-gcc -g -c -o led_on.o led_on.S 因?yàn)榧恿?c選項(xiàng),做了前三個(gè)步驟,預(yù)處理、編譯、匯編源文件,但是不作連接。
arm-linux-ld -Ttext 0x0000000 -g led_on.o -o led_on_elf 將前三個(gè)步驟生成的.o文件連接成ELF可執(zhí)行文件
arm-linux-objcopy -O binary -S led_on_elf led_on.bin 將可在linux執(zhí)行的ELF文件復(fù)制成能在開發(fā)板執(zhí)行的文件

補(bǔ)充常用的概念

$^–所有的依賴文件。$@–目標(biāo)文件。$<–第一個(gè)依賴文件。

hello:hello.o a.o
    gcc -o hello hello.o a.o
hello.o:hello.c
    gcc -o hello.o -c hello.c
a.o:a.c
    gcc -o a.o -c a.c

上面經(jīng)過簡寫如下:

hello:hello.o a.o
    gcc -o $@ $^
%.o:%.c
    gcc -o $@ -c $^
本站聲明: 本文章由作者或相關(guān)機(jī)構(gòu)授權(quán)發(fā)布,目的在于傳遞更多信息,并不代表本站贊同其觀點(diǎn),本站亦不保證或承諾內(nèi)容真實(shí)性等。需要轉(zhuǎn)載請聯(lián)系該專欄作者,如若文章內(nèi)容侵犯您的權(quán)益,請及時(shí)聯(lián)系本站刪除。
換一批
延伸閱讀

一初識(shí)Makefilemake是一種用于項(xiàng)目編譯的應(yīng)用程序,本質(zhì)是一種腳本。而Makefile則是對(duì)make腳本的規(guī)則描述。僅僅是寫腳本編譯項(xiàng)目的話shell腳本也是可以做的,用make的原因在于,make可以解析源文件...

關(guān)鍵字: makefile

使用環(huán)境Ubuntu 12.042,VMware Workstation3,微集成7英寸4418 Linux平板電腦安裝用于gcc-linaro-arm的交叉工具包。該程序包位于虛擬機(jī)的適當(dāng)目錄中,該目錄在以下目錄中進(jìn)行...

關(guān)鍵字: Linux 交叉編譯 工業(yè)平板

Makefile格式分析如下: Makefile三大組成:目標(biāo)、依賴、命令 一、 led.bin: led.o #(目標(biāo)文件的生成依賴于命令行對(duì)依賴文件的處理。要將所有

關(guān)鍵字: makefile 常用makefile

源碼下載官網(wǎng): https://w1.fi/releases/ libnl-1.1.4交叉編譯: ./configure CC=xx-gcc \ --prefix=/home/xx/openspur

關(guān)鍵字: 交叉編譯 源碼

Linux-2.6.38.8 移植參考 ? 最近學(xué)習(xí)Linux有點(diǎn)迷茫,剛學(xué)會(huì)了字符驅(qū)動(dòng)的編寫但是卻不知道下一步該干些什么,想學(xué)習(xí)Linux內(nèi)核裁剪,但是苦于找不到資料,開發(fā)板自帶的是Linux3.0

關(guān)鍵字: Linux makefile

一、什么是交叉編譯? ? ? ?在一種計(jì)算機(jī)環(huán)境中運(yùn)行的編譯程序,能編譯出在另外一種環(huán)境下運(yùn)行的代碼,我們就稱這種編譯器支持交叉編譯。這個(gè)編譯過程就叫交叉編譯。簡單地說,就是在一個(gè)平臺(tái)上生成另一個(gè)平臺(tái)

關(guān)鍵字: 交叉編譯

Makefile的編寫指導(dǎo)概述什么是makefile?或許很多Windows的程序員都不知道這個(gè)東西,因?yàn)槟切¦indows的IDE都為你做了這個(gè)工作,但我覺得要作一個(gè)好的和professional的

關(guān)鍵字: html makefile Windows

本文是對(duì)《深度探索linux操作系統(tǒng)系統(tǒng)構(gòu)建和原理解析》的筆記,目的是為了理解操作系統(tǒng),重點(diǎn)放在了各種依賴關(guān)系上,沒有刻意去記錄細(xì)節(jié)。1.疑惑構(gòu)建目標(biāo)系統(tǒng)的時(shí)候,即使目標(biāo)系統(tǒng)和宿主系統(tǒng)運(yùn)行在同一個(gè)體系

關(guān)鍵字: 交叉編譯 構(gòu)建linux

最近在學(xué)習(xí)Linux下的C編程,買了一本叫《Linux環(huán)境下的C編程指南》讀到makefile就越看越迷糊,可能是我的理解能不行。于是google到了以下這篇文章。通俗易懂。然后把它貼出來,方便學(xué)習(xí)。

關(guān)鍵字: C語言 Linux makefile

具體內(nèi)容: ?首先需要安裝macports安裝完成后我們使用命令:callondeMacBook-Pro:~?callon$?sudo?port?install?libelf Password: Er

關(guān)鍵字: macbook 交叉編譯
關(guān)閉