日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 运维知识 > linux >内容正文

linux

arn linux编译系统时错误的解决

發(fā)布時(shí)間:2023/11/29 linux 26 豆豆
生活随笔 收集整理的這篇文章主要介紹了 arn linux编译系统时错误的解决 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

今天打算編譯支持orange pi開(kāi)發(fā)板的Raspbain Jessie系統(tǒng) 從github上拿下源碼,下載,編譯,一直比較順利

結(jié)果在編譯一半的時(shí)候報(bào)錯(cuò):

/second-stage: line 206: /bin/sleep: cannot execute binary file: Exec format error

?

根據(jù)錯(cuò)誤提示信息,找到了該語(yǔ)句如下:

while kill -0 $1 2>/dev/nulldoi=$(( (i+1) %4 ))printf "\r$2 ${spin:$i:1}"sleep .1done

?

簡(jiǎn)簡(jiǎn)單單一句sleep,怎么會(huì)格式錯(cuò)誤呢?單獨(dú)執(zhí)行也沒(méi)問(wèn)題啊? 繼續(xù)往上找,查到是在create_image腳本里調(diào)用了second-stage,調(diào)用語(yǔ)句如下:

# ******************************************************************************** # *** If running on ARM (OrangePI) USE THE LINE WITHOUT "qemu-arm-static" !!! **** # ******************************************************************************** #if ! chroot $odir /bin/bash /second-stage; then if ! chroot $odir /usr/bin/qemu-arm-static -cpu cortex-a9 /bin/bash /second-stage; thenmv $odir/install.log . > /dev/null 2>&1echo "================================================"echo "ERROR on second-stage, instalation NOT FINISHED."echo "================================================"exit 1 fi

?

原來(lái)是執(zhí)行了chroot后調(diào)用的,也就是說(shuō)實(shí)際調(diào)用的是

~/orangepi/OrangePiH3/output/linux-jessie/bin/sleep

?

但是此處指定了是用qemu-arm-static命令調(diào)用的,怎么還出錯(cuò)?該命令到底是個(gè)什么用法? 于是做了以下測(cè)試:

sudo chroot ~/orangepi/OrangePiH3/output/linux-jessie\ /usr/bin/qemu-arm-static -cpu cortex-a9 /bin/bash

?

順利調(diào)用! 但是在該arm版的bash下面,卻始終無(wú)法調(diào)用/bin/sleep,仍是同樣的提示:

cannot execute binary file: Exec format error

?

原來(lái)qemu-arm-static僅對(duì)當(dāng)前程序有效,并不會(huì)改變系統(tǒng)程序執(zhí)行環(huán)境,所以導(dǎo)致仍將arm版的/bin/sleep作為x86程序進(jìn)行了處理,也就是調(diào)用/bin/sleep也需要使用qemu-arm-static命令來(lái)調(diào)用,難道需要改腳本?那改動(dòng)的地方就不少了,有沒(méi)有便捷點(diǎn)的辦法?

于是google了下,在該文章:

Emulating ARM on Debian/Ubuntu

中,發(fā)現(xiàn)少了關(guān)鍵的一步:

#This can only be run as root (sudo don't work) sudo su echo ':arm:M::\x7fELF\x01\x01\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x02\x00\x28\x00:\xff\xff\xff\xff\xff\xff\xff\x00\xff\xff\xff\xff\xff\xff\xff\xff\xfe\xff\xff\xff:/usr/bin/qemu-arm-static:' > /proc/sys/fs/binfmt_misc/register exit

?

該語(yǔ)句意思是將qemu-arm-static注冊(cè)為arm可執(zhí)行文件的默認(rèn)解釋器! 執(zhí)行了這一步后,就無(wú)需指定qemu-arm-static作為解釋器,直接調(diào)用arm程序即可執(zhí)行

繼續(xù)進(jìn)行編譯,成功!

轉(zhuǎn)載于:https://www.cnblogs.com/mmseh/p/9062239.html

總結(jié)

以上是生活随笔為你收集整理的arn linux编译系统时错误的解决的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。