Я написал небольшую программу go для запуска на 32-битном маршрутизаторе MIPS.Я могу получить базовую программу hello world, работающую на маршрутизаторе, используя набор инструментов go build.
env GOOS=linux GOARCH=mips GOMIPS=softfloat go build -a
Программа, которую я пытаюсь скомпилировать, использует библиотеку go-ethereum и выдает следующую ошибку при попытке собрать
go build github.com/ethereum/go-ethereum/crypto/secp256k1: build constraints exclude all Go files in ~/go/src/github.com/ethereum/go-ethereum/crypto/secp256k1
Я нашел инструмент кросс-компиляции goxgo и был успешным в создании двоичного файла с помощью этого инструмента (https://github.com/karalabe/xgo). Когда я пытаюсь запустить двоичный файл, хотя я получаю следующее «Программа завершена с сигналом SIGILL, недопустимая инструкция». Мне удалось получить дамп ядраиз файла, но у меня нет большого опыта работы с GDB.
Program terminated with signal SIGILL, Illegal instruction.
#0 0x008274a8 in __sigsetjmp_aux ()
Запуск макета Asm я получаю следующее:
0x8274a4 <__sigsetjmp_aux+4> addiu gp,gp,-19312 │
>│0x8274a8 <__sigsetjmp_aux+8> sdc1 $f20,56(a0) │
│0x8274ac <__sigsetjmp_aux+12> sdc1 $f22,64(a0)
Я не уверен, как это интерпретировать любую помощьбудет очень признателен.
Вот он, вывод команды cat / proc / cpuinfo:
system type : Qualcomm Atheros QCA9533 ver 2 rev 0
machine : GL.iNet GL-AR750
processor : 0
cpu model : MIPS 24Kc V7.4
BogoMIPS : 432.53
wait instruction : yes
microsecond timers : yes
tlb_entries : 16
extra interrupt vector : yes
hardware watchpoint : yes, count: 4, address/irw mask: [0x0ffc, 0x0ffc, 0x0ffb, 0x0ffb]
isa : mips1 mips2 mips32r1 mips32r2
ASEs implemented : mips16
shadow register sets : 1
kscratch registers : 0
package : 0
core : 0
VCED exceptions : not available
VCEI exceptions : not available
и вывод файла util на двоичный файл:
ELF 32-bit MSB executable, MIPS, MIPS32 rel2 version 1, statically linked, for GNU/Linux 3.2.0, BuildID[sha1]=83c74323a279af9cba50869671ef03d5ad497db8, not stripped
Я потратил довольно много времени, пытаясь запустить эту программу, даже разветвляя инструмент xgo, чтобы он мог принять параметр softfloat. Любая помощь или направление по этой проблеме будет высоко оценено, спасибо.