基于編譯型語言鯤鵬應用開發小技巧
編譯型語言應用執行過程
大部分應用可以通過重新編譯即可移植到鯤鵬平臺
預處理命令: gcc -E hello.c -o hello.i,預處理完成后使用命令: cat hello.i可以看到預處理后的代碼
編譯命令: gcc -s hello.i -o hello.s
匯編命令: gcc -c hello.c -o hello.o
鏈接處理可分為:
靜態鏈接:函數的代碼將從其所在地靜態鏈接庫中被拷貝到最終的可執行程序中。這樣該程序在被執行時這些代碼將被裝入到該進程的虛擬地址空間中。靜態鏈接庫實際上是一個目標文件的集合,其中的每個文件含有庫中的一個或者—組相關函數的代碼。
動態鏈接:函數的代碼被放到稱作是動態鏈接庫或共享對象的某個目標文件中。鏈指鏈接階段僅僅只加入一些描述信息,而程序執行時再從系統中把相應動態庫加載到內存中去。鏈接程序此時所作的只是在最終的可執行程序中記錄下共享對象的名字以及其它少量的登記信息。在此可執行文件被執行時,動態鏈接庫的全部內容將被映射到運行時相應進程的虛地址空間。動態鏈接程序將根據可執行程序中記錄的信息找到相應的函數代碼。
編譯移植——參數處理
不同架構下差異化GCC編譯選項查詢(gcc7.3為例)可在如下鏈接查看:鏈接:https://gcc.gnu.org/onlinedocs/gcc-7.3.0/gcc/Submodel-
Options.html#Submodel-Options
注意:-mabi=lp64在gcc4.8.5不支持,推薦gcc7.3及以上版本
編譯編譯——宏處理
匯編指令替換——C/C++中內聯匯編語法
內聯的匯編語句以asm開頭,有時也會使用_asm_,后面可加參數”_volatile__"表示編譯器不要優化代碼,后面的指令保留原樣
匯編指令替換——替換方法
方法一:如果有相同功能的ARM匯編指令,則直接替換
方法二:如果沒有相同功能的ARM匯編指令,則重新開發代碼來替換
匯編語言 鯤鵬
版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發現本站中有涉嫌抄襲或描述失實的內容,請聯系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。