У меня есть встроенное устройство с MIPS arch, работающее под OpenWRT
Тип системы: MediaTek MT7628AN ver: 1 eco: 2
машина: WRTnode2P
процессор: 0
Модель процессора: MIPS 24KEc V5.5
Я хочу скомпилировать небольшую программу на C через мой компьютер (Ubuntu)
#include <stdio.h>
int main(void){
printf("HelloWorld");
return 0;
}
Для компиляции я использую команду mips-linux-gnu-gcc
mips-linux-gnu-gcc -march=24kec -mabi=32 hello.c -o hello
Я отправляю привет программу на свое устройство и делаю chmod 755
chmod 755 hello
Когда я пытаюсь выполнить это, у меня появляется ошибка
root@openWrt:/www# ./hello
./hello: line 1: syntax error: unexpected word (expecting ")")
Я не понимаю, что происходит, я попробовал какую-то другую команду, чтобы скомпилировать это с аргументом: -EB или -EL или нет, -static или нет, -mabi = 32 и нет, но у меня та же проблема.
Кто-нибудь мне поможет?
Спасибо
[ОБНОВЛЕНИЕ]
Я посылаю команду файла в существующий файл, и это результат
fw3: ELF 32-bit LSB executable, MIPS, MIPS32 rel2 version 1, dynamically linked, interpreter /lib/ld., for GNU/Linux 3.2.0, stripped
поэтому я скомпилирую свою программу с помощью этой команды
mipsel-linux-gnu-gcc -march=24kec -mips32r2 -mips16 hello.c -o hello
теперь у меня есть файл с результатом команды
hello: ELF 32-bit LSB executable, MIPS, MIPS32 rel2 version 1 (SYSV), dynamically linked, interpreter /lib/ld., for GNU/Linux 3.2.0, BuildID[sha1]=cd12319441c530606d52d96478719b06a7b215a7, not stripped
Теперь я читаю ELF моей удаленной программы
ELF Header:
Magic: 7f 45 4c 46 01 01 01 00 01 00 00 00 00 00 00 00
Class: ELF32
Data: 2's complement, little endian
Version: 1 (current)
OS/ABI: UNIX - System V
ABI Version: 1
Type: EXEC (Executable file)
Machine: MIPS R3000
Version: 0x1
Entry point address: 0x402c40
Start of program headers: 52 (bytes into file)
Start of section headers: 78592 (bytes into file)
Flags: 0x74001005, noreorder, cpic, o32, mips16, mips32r2
Size of this header: 52 (bytes)
Size of program headers: 32 (bytes)
Number of program headers: 10
Size of section headers: 40 (bytes)
Number of section headers: 31
Section header string table index: 30
и это моя команда hello program readelf
ELF Header:
Magic: 7f 45 4c 46 01 01 01 00 00 00 00 00 00 00 00 00
Class: ELF32
Data: 2's complement, little endian
Version: 1 (current)
OS/ABI: UNIX - System V
ABI Version: 0
Type: EXEC (Executable file)
Machine: MIPS R3000
Version: 0x1
Entry point address: 0x4005c0
Start of program headers: 52 (bytes into file)
Start of section headers: 6700 (bytes into file)
Flags: 0x74001007, noreorder, pic, cpic, o32, mips16, mips32r2
Size of this header: 52 (bytes)
Size of program headers: 32 (bytes)
Number of program headers: 11
Size of section headers: 40 (bytes)
Number of section headers: 33
Section header string table index: 30
Существует две версии ABI различий, а во флагах - рис.
Если я пытаюсь запустить программу hello, у меня появляется эта ошибка
hello: error while loading shared libraries: libc.so.6: cannot open shared object file: No such file or directory
Я пытаюсь добавить аргумент -static, но у меня появляется эта ошибка при запуске моей привет программы
Illegal instruction
Я всегда застрял с этой проблемой.