Ich habe ein RPI 3 Modell B, und ich möchte ein kleines Programm für die Interaktion mit dem Gerät SPI kompilieren. Ich schreibe das Programm auf meinem Linux-Desktop, also möchte ich das Programm kompilieren.
Dazu habe ich die Cross-Compiler von hier installiert: https://github.com/raspberrypi/tools
ich witingPi Bibliothek bin mit so folgte ich diese Anweisungen für installaion: http://wiringpi.com/download-and-install/
Das Programm ich schreibe ist eines der Beispiele aus dem Web (nur um sicherzugehen ich kann es) kompilieren und ausführen:Linking libwiringPi auf Cross Compiler für RPI
#include <stdint.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <errno.h>
#include <wiringPiSPI.h>
#define CHANNEL 1
void send3(uint8_t a, uint8_t b, uint8_t c) {
uint8_t buf[3];
buf[0] = a;
buf[1] = b;
buf[2] = c;
wiringPiSPIDataRW(CHANNEL, buf, 3);
}
int main(int argc, char** argv) {
if (wiringPiSPISetup(CHANNEL, 4000000) < 0) {
fprintf (stderr, "SPI Setup failed: %s\n", strerror (errno));
exit(errno);
}
printf("start\n");
send3(0x40, 0x0A, 0x0B);
send3(0x41, 0x0A, 0x00);
send3(0x40, 0x00, 0xFF);
send3(0x40, 0x0C, 0xFF);
send3(0x40, 0x13, 0x00);
send3(0x40, 0x01, 0x00);
send3(0x40, 0x04, 0xFF);
printf("done\n");
return 0;
}
Das Problem ist, dass ich nicht das Gestängeteil mit der wiringPi Bibliothek an der Arbeit kann: der Compilation Teil funktioniert gut: ./arm-linux-gnueabihf-gcc -c /home/guy/main.c -o /home/guy/main.o -I /home/guy/toolchain/wiringPi/wiringPi
Wo /home/guy/toolchain/wiringPi/wiringPi
ist der Pfad zu den WiringPi-Bibliotheken und -Köpfen. Ich bin mir sicher, dass dies gut funktioniert hat, da die Kompilierung erfolgreich war (dh der Zugriff auf die wiringPi-Header ist erfolgreich).
Als nächstes habe ich den folgenden Befehl versucht, den Code mit der wirinPi Bibliothek zu verknüpfen und die ausführbare Datei erstellen: ./arm-linux-gnueabihf-gcc -L/home/guy/toolchain/wiringPi/wiringPi -o "AngleCalculator" /home/guy/main.o -lwiringPi
Dies scheiterte, und ich bekam die folgende Meldung: /home/guy/toolchain/wiringPi/wiringPi/libwiringPi.so: file not recognized: File format not recognized
Einige Beiträge mit vorgeschlagen, die -static
Flagge während der Verknüpfung, aber es hat immer noch nicht funktioniert und ich habe die folgende Nachricht: /home/guy/toolchain/rpi2/tools/arm-bcm2708/gcc-linaro-arm-linux-gnueabihf-raspbian-x64/bin/../lib/gcc/arm-linux-gnueabihf/4.8.3/../../../../arm-linux-gnueabihf/bin/ld: cannot find -lwiringPi
. Ich denke, das liegt daran, dass es keine statische Version von wiringPi gibt.
Die Ausführung desselben Verbindungsbefehls auf dem RPI-Gerät selbst funktioniert erfolgreich. Ich habe keine Ahnung, was diesen Fehler verursacht. Gibt es eine andere Version von GCC-Cross-Compiler, die ich verwenden sollte? Vielleicht sollte ich eine andere Version von wiringPi verwenden?
Dank