- 鯤鵬架構(gòu)入門與實(shí)戰(zhàn)
- 張磊編著
- 8字
- 2022-07-29 14:17:48
第5章 鯤鵬應(yīng)用遷移
5.1 應(yīng)用遷移的原因
5.1.1 不同架構(gòu)下程序執(zhí)行對比
通過一個簡單的C程序,演示一下在不同架構(gòu)下編譯運(yùn)行的對比,要對比的環(huán)境如表5-1所示。
表5-1 運(yùn)行環(huán)境對比

1.方式1
步驟1:準(zhǔn)備好x86架構(gòu)的運(yùn)行環(huán)境,安裝CentOS操作系統(tǒng),并且安裝好標(biāo)準(zhǔn)C開發(fā)環(huán)境,具體的步驟可以參考4.2節(jié)準(zhǔn)備軟件環(huán)境的內(nèi)容,注意CPU架構(gòu)選擇x86架構(gòu)。
步驟2:創(chuàng)建/data/code/文件夾,然后創(chuàng)建x86_demo.c,命令如下:
mkdir /data/code/ cd /data/code/ vim x86_demo.c
步驟3:按i鍵進(jìn)入編輯模式,輸入代碼,然后保存并退出,代碼如下:

步驟4:編譯x86_demo.c,生成編譯后的文件x86_demo,命令如下:
gcc -g -o x86_demo x86_demo.
注意:這里使用了gcc的-g選項(xiàng),使用該選項(xiàng)在編譯時會額外執(zhí)行如下的操作:
(1)創(chuàng)建符號表,符號表包含了程序中使用的變量名稱的列表。
(2)關(guān)閉所有的優(yōu)化機(jī)制,以便程序執(zhí)行過程中嚴(yán)格按照原來的C代碼進(jìn)行。
這樣,在后續(xù)的反編譯的時候,可以用匯編代碼和C源代碼進(jìn)行對比,便于理解匯編后的代碼。
步驟5:運(yùn)行x86_demo,命令如下:
./x86_demo
因?yàn)檫@個演示程序沒有輸出,所以運(yùn)行x86_demo也沒有回顯。
2.方式2
步驟1:準(zhǔn)備鯤鵬架構(gòu)的C開發(fā)環(huán)境,參考4.2節(jié)準(zhǔn)備軟件環(huán)境的內(nèi)容。
步驟2:創(chuàng)建/data/code/文件夾,然后創(chuàng)建kunpeng_demo.c,命令如下:
mkdir /data/code/ cd /data/code/ vim kunpeng_demo.c
步驟3:按i鍵進(jìn)入編輯模式,輸入代碼,然后保存并退出,代碼如下:

步驟4:編譯kunpeng_demo.c,生成編譯后的文件kunpeng_demo,命令如下:
aarch64 - redhat - Linux - gcc -g -o kunpeng_demo kunpeng_demo.c
步驟5:運(yùn)行kunpeng_demo,命令如下:
./kunpeng_demo
同樣沒有回顯。
3.方式3
步驟1:登錄鯤鵬架構(gòu)服務(wù)器
步驟2:從x86服務(wù)器復(fù)制編譯好的x86_demo到本地,命令如下:
scp root@192.168.0.208:/data/code/x86_demo /data/code/
需要根據(jù)服務(wù)器的實(shí)際情況修改x86服務(wù)器的用戶名和IP。
步驟3:運(yùn)行x86_demo,命令如下:
./x86_demo
系統(tǒng)會提示無法運(yùn)行該文件,如圖5-1所示。

圖5-1 鯤鵬架構(gòu)運(yùn)行x86程序
4.方式4
步驟1:登錄x86架構(gòu)服務(wù)器
步驟2:從鯤鵬服務(wù)器復(fù)制編譯好的kunpeng_demo到本地,命令如下:
scp root@192.168.0.133:/data/code/kunpeng_demo /data/code/
需要根據(jù)實(shí)際情況修改Kunpeng服務(wù)器的用戶名和IP。
步驟3:運(yùn)行kunpeng_demo,命令如下:
./kunpeng_demo
系統(tǒng)會提示無法運(yùn)行該文件,如圖5-2所示。

圖5-2 x86架構(gòu)運(yùn)行鯤鵬程序
根據(jù)上面的4個小實(shí)驗(yàn),可以得出這樣的結(jié)論,x86架構(gòu)下編譯的C程序無法在鯤鵬架構(gòu)下直接運(yùn)行;同樣,鯤鵬架構(gòu)下編譯的C程序也無法在x86架構(gòu)下運(yùn)行。為什么會這樣呢?在5.1.2節(jié)進(jìn)行有針對性的分析。
- 工程軟件開發(fā)技術(shù)基礎(chǔ)
- 體驗(yàn)設(shè)計原理:行為、情感和細(xì)節(jié)
- 羅克韋爾ControlLogix系統(tǒng)應(yīng)用技術(shù)
- 前端架構(gòu):從入門到微前端
- Scratch真好玩:教小孩學(xué)編程
- Internet of Things with Intel Galileo
- Visual Basic程序設(shè)計實(shí)驗(yàn)指導(dǎo)(第4版)
- 編譯系統(tǒng)透視:圖解編譯原理
- Android程序設(shè)計基礎(chǔ)
- 區(qū)塊鏈技術(shù)進(jìn)階與實(shí)戰(zhàn)(第2版)
- Flowable流程引擎實(shí)戰(zhàn)
- Hands-On Neural Network Programming with C#
- SpringBoot從零開始學(xué)(視頻教學(xué)版)
- Learning Splunk Web Framework
- Instant GLEW