Ich mache nur meine ersten Schritte mit Buildroot und Raspberry Pi (mit Raspbian). Aber irgendwie scheint ich mit der Cross-Compilation etwas falsch zu machen. Die Anwendung ist ein einfachste Hallo Welt Programm in C geschrieben Dies ist, was ich getan habe:Cross-kompilierte Anwendung läuft nicht auf Raspberry Pi
- heruntergeladen und installiert buildroot
make raspberrypi2_defconfig
make toolchain
Dann habe ich die kleine Anwendung geschrieben und das folgende Makefile:
CROSS_BIN := /home/me/raspi/buildroot-2016.05/output/host/usr/bin
SYSROOT := /home/me/raspi/buildroot-2016.05/output/host/usr/arm-buildroot-linux-uclibcgnueabihf/sysroot
PATH := $(CROSS_BIN):$(PATH)
CC := arm-linux-gcc
CFLAGS := --sysroot=$(SYSROOT)
app: app.c
$(CC) $(CFLAGS) -o [email protected] $<
kompiliert die App und kopierte es auf die Himbeere. Als ich versuchte, es auszuführen, beschwert sich RPI, dass es die Datei nicht finden kann (obwohl es dort und ausführbare Datei sicher ist). Die binäre Art scheint mir in Ordnung und sollte an die CPU passen:
[email protected]:~ $ ./app
-bash: ./app: No such file or directory
[email protected]:~ $ ls -l app
-rwxr-xr-x 1 pi pi 4916 Jul 10 11:07 app
[email protected]:~ $ file app
app: ELF 32-bit LSB executable, ARM, EABI5 version 1 (SYSV), dynamically linked, interpreter /lib/ld-uClibc.so.0, not stripped
[email protected]:~ $ lscpu
Architecture: armv7l
Byte Order: Little Endian
CPU(s): 4
On-line CPU(s) list: 0-3
Thread(s) per core: 1
Core(s) per socket: 4
Socket(s): 1
Model name: ARMv7 Processor rev 5 (v7l)
CPU max MHz: 900.0000
CPU min MHz: 600.0000
Kann mir jemand sagen, was ich falsch mache? Wenn ich die App nativ kompiliere und auf dem Entwicklungshost ausführe, läuft sie problemlos.
Probieren Sie 'ldd./App' und' readelf -l ./app | grep interpreter' aus und überprüfen Sie, ob der erforderliche Programminterpreter auf Ihrem Ri OS vorhanden ist. – osgx
Sehr nützliche Befehle, danke für den Hinweis. Wie Ishay vermutete, fehlt uClibc: '[Requesting interpreter: /lib/ld-uClibc.so.0]' –
Danke @sawdust. Das war die Lösung, es funktioniert gut mit 'glibc'. Nach all den anderen Hinweisen habe ich das selbst herausgefunden - nur noch nicht gepostet. –