J'utilise Go 1.11.4 sous Windows 10 et je souhaite compiler du code pour un processeur MIPS 74Kc (Qualcomm Atheros QCA9558) sous Linux. Je compile avec:
GOOS = linux GOARCH = mips go build
Obtenez un exécutable, téléchargez-le et exécutez-le et obtenez:
Instruction illégale
Réessayez avec GOARCH = mipsle
et obtenez:
./hello_mipsle_linux: ligne 1: erreur de syntaxe: inattendue "("
Que me manque-t-il?
3 Réponses :
Pour lister tous les architectes MIPS possibles disponibles pour votre chaîne d'outils de construction actuelle, utilisez go tool
par exemple
$ go version go version go1.12 darwin/amd64 $ go tool dist list | grep mips linux/mips linux/mips64 linux/mips64le linux/mipsle
donc probablement l'un des GOARCH
mips64
ou mips64le
.
uname -m
aiderait à déterminer l'architecture de la machine de votre système cible.
Mon hôte effectuant la compilation avait un FPU, mais pas la carte. L'ajout de GOMIPS = softfloat
l'a corrigé:
GOOS = linux GOARCH = mips GOMIPS = softfloat go build
Pour info: ces binaires MIPS fonctionnent également sur les points d'accès Unifi AC! :RÉ
J'ai un problème similaire et il est résolu en définissant GOARCH = mipsle
. Cela devrait fonctionner
$ uname -a Linux OpenWrt 4.14.151 #0 Tue Nov 5 14:12:18 2019 mips GNU/Linux
Mon cœur est MIPS 24KEc V5.0
, voir mon blog https://zyfdegh.github.io/post/202002-go-compile-for-mips/
Si ce n'est pas le cas, essayez ces étapes
$ lscpu | grep "Byte Order"
cat / proc / cpuinfo
serait également utile.
GOOS=linux GOARCH=mipsle GOMIPS=softfloat go build
GOARCH = mipsle
, si c'est Little-Endian 64 bits, définissez set GOARCH=mips64le
Autre question connexe Programme d'écriture et de compilation pour OpenWrt j'espère que cela vous aidera.
Nous sommes capables de résoudre ça? J'ai un problème similaire
Oui. Voir ma réponse ci-dessous. Ajoutez simplement
GOMIPS = softfloat
.