2017-08-23 162 views
0

我嘗試編譯我的Linux桌面上的go程序(Linux桌面4.10.0-28-generic#32-Ubuntu SMP Fri Jun 30 05:32:18 UTC 2017 x86_64 x86_64 x86_64 GNU/Linux的),去版本go version go1.8.3 linux/amd64武裝:產生交叉編譯爲ARMv7失敗

$ GOPATH=/home/xrfang/git/hermes/ GOARM=7 GOARCH=arm go build . 

的可執行文件,但好像不是的ARMv7:

$ file hermes 

hermes: ELF 32-bit LSB executable, ARM, EABI5 version 1 (SYSV), statically linked, not stripped 

它顯示EABI5。我如何交叉編譯到ARMv7?我的Linux桌面上有什麼缺失,以便交叉編譯回退到較低的ARM版本?

謝謝。

+0

你怎麼能說它不是從EABI5編譯爲v7? – RaviTezu

+0

@RaviTezu,對不起,我以爲EABI5是指ARMv5?如果不是,我怎麼知道?事實上,我調查的原因是我沒有通過使用GOARM = 7獲得任何性能改進。我的程序在android機器上運行,調用screencap以RGBA8888原始格式執行sceenshot,然後將其壓縮爲JPEG格式。我可以期待通過使用ARMv7提高性能,尤其是JPEG編碼部分? – xrfang

回答

0

我相信,它不是ARMv5。我試圖在MAC操作系統上做同樣的事情,Mac上的'文件'命令說v7,但Linux上的'文件'命令不會。但是,我知道v7有一些很好的改進,可能會提高程序的性能。

但是,這超出了這個問題的範圍,你可能需要深入挖掘你正在做的事情以及爲什麼預期的性能改進。 我只能說,它是爲v7編譯的。