|
【HarmonyOS HiSpark AI Camera試用連載 】用arm-linux-gnueabihf-gcc編譯應(yīng)用程序(沒搞定), 突發(fā)奇想,看看能不能用gcc 編譯,于是安裝了一個 arm-linux-gnueabihf-gcc ,嘗試編譯”applications/sample/camera/app” 文件。 編譯過程沒有什么好說的,自然一次成功。把編譯好的文件放在userdata 文件夾下運(yùn)行
圖片1.png (4.28 KB, 下載次數(shù): 0)
下載附件 保存到相冊
8 小時前 上傳 當(dāng)然是不能運(yùn)行的。 我們再仔細(xì)研究一下elf 文件的格式組成。
圖片2.png (61.79 KB, 下載次數(shù): 0)
下載附件 保存到相冊
8 小時前 上傳 對于我們希望編譯出來可以執(zhí)行的elf ,應(yīng)該看右圖“執(zhí)行視圖”。當(dāng)我們使用 ./XXX 命令執(zhí)行一個可執(zhí)行的 elf 文件時,動態(tài)鏈接器(即加載器)會以執(zhí)行視圖解析這個文件,對于這個文件來說,最重要的就是段表(即 Segment )。 上述錯誤提示也是說表的地址錯誤了,使用readelf 文件分別查看并比較兩個文件: (下圖左為clang 編譯,右為 gcc 編譯)。
圖片3.png (130.32 KB, 下載次數(shù): 0)
下載附件 保存到相冊
8 小時前 上傳 發(fā)現(xiàn)使用gcc 編譯的文件多了段 .note.ABI-tag 、 .note.gnu.build-i 、 .gnu.version 、 .gnu.version_r ,缺少段 .got.plt 、 .eh_frame_hdr 、 .bss.rel.ro 可以看到,缺少的和多出的字段都不具有X (執(zhí)行)屬性,理論上是不影響 elf 是否可以被執(zhí)行的。 執(zhí)行環(huán)境,out of memory 的原因可能是:
圖片4.png (55.53 KB, 下載次數(shù): 0)
下載附件 保存到相冊
8 小時前 上傳 Hi3516DV300 實(shí)際采用芯片的結(jié)構(gòu)為“ARMv7 架構(gòu)”,但采用 gcc 編譯出的版本為 v6 ,導(dǎo)致程序不可使用? 以上只是推測,實(shí)際情況還請大佬們評估。 |
|