2017-11-01 4 views
0

Ich brauche einige GPIOs auf meinem ASUS RT-AC66U. Deshalb habe ich eine Platine mit einem MCP2221A hergestellt.Compiled ausführbare Datei stoppt auf MIPS-Router mit "nicht gefunden"

Mit this source konnte ich die ausführbare Datei erstellen und auf meinem x86-64bit-Rechner (Xubuntu 16.04) laufen und alles funktioniert gut.

nun die gleiche Quelle auf MIPS und erhalten diesen Fehler Quer zusammengestellt habe ich:

[email protected]:/tmp/home/root/gpio$ ls -la 
drwxrwxrwx 2 frashman root   180 Nov 1 12:16 . 
drwx------ 4 frashman root   100 Nov 1 12:16 .. 
-rw-rw-rw- 1 frashman root   485 Nov 1 12:16 Makefile 
-rwxrwxr-x 1 frashman root   10044 Nov 1 12:16 gpio 
-rw-rw-r-- 1 frashman root   19857 Nov 1 12:16 hid.c 
-rw-rw-r-- 1 frashman root   13870 Nov 1 12:16 hidapi.h 
-rw-rw-r-- 1 frashman root   24758 Nov 1 12:16 libmcp2221.h 
-rw-rw-r-- 1 frashman root   3122 Nov 1 12:16 main.c 
-rw-rw-r-- 1 frashman root   4456 Nov 1 12:16 main.o 
[email protected]:/tmp/home/root/gpio$ ./gpio 
-sh: ./gpio: not found 

Ok, so dass ich bauen die Quelle auf dem Router selbst mit einem Debian subsystem und die Binärdatei läuft ohne Fehler (außer für die 0 gefundenen Geräte - es war nicht zu der Zeit verbunden, wenn eine dieser schrieb)

[email protected]:/home/admin/gpio$ ./gpio 
Starting! 
Looking for devices... found 0 devices 
Opening device... No MCP2221s found 

Aber, wenn ich dieses binäre auf dem Hauptsystem des Routers ausführen möchten wird es mit dem gleichen Fehler stoppen:

[email protected]:/tmp/mnt/entware/entware/debian/home/admin/gpio$ ./gpio 
-sh: ./gpio: not found 

Dies ist die Make-Datei:

PROJECT=gpio 

SOURCES= \ 
    main.c 

CFLAGS= \ 
    -c \ 
    -Wall \ 
    -Wextra \ 
    -Wstrict-prototypes \ 
    -Wunused-result \ 
    -O3 \ 
    -std=c99 \ 
    -fmessage-length=0 \ 
    -mtune=mips32r2 \ 
    -mips32r2 

LDFLAGS= \ 
    -s 

LDLIBS= \ 
    -lmcp2221 

EXECUTABLE=$(PROJECT) 

CC=mipsel-linux-gnu-gcc 
OBJECTS=$(SOURCES:.c=.o) 


all: $(SOURCES) $(EXECUTABLE) 

$(EXECUTABLE): $(OBJECTS) 
    $(CC) $(LDFLAGS) $(OBJECTS) $(LDLIBS) -o [email protected] 

.c.o: 
    $(CC) $(CFLAGS) $< -o [email protected] 

clean: 
    rm -rf *.o $(EXECUTABLE) 

.PHONY: clean all 

Hat jemand eine Idee, warum das sein könnte?

Antwort

0

Lauf readelf -l gpio | grep -i interpreter. Es sollte einen Weg zu der LDO zeigen, die existieren muss. Sie können es mit laufendem Readelf auf /bin/sh auf dem System vergleichen, um zu sehen, was es erwartet.

Wenn die Pfade unterschiedlich sind, können Sie -Wl,-dynamic-linker,/path zu den LDFLAGS Ihres Makefiles hinzufügen (ersetzen Sie /path offensichtlich mit dem echten Pfad).

Verwandte Themen