Intel Edison Breakout Board mraa-Bibliothek

Gast #3916215
Lesenswert?

Hi zusammen,

ich arbeite seit kurzem mit dem Intel Edison Breakout Board und bin 
soweit ganz zufrieden. Die Dokumentation ist natürlich noch nicht 
ausgereift und daher komme ich gleich zu meinem Problem.

Der Edison hat das neueste Edison-Yocto-Image bekommen, ist also 
geflasht und die Verbindung zum wLan funktioniert auch. Die 
Konfiguration ist kein Problem.

Kurze Testprogramme (mit vi geschrieben, compiliert und ausgeführt) 
funktionieren auch.

Um die GPIOs (z.B. für das übliche LED-Blinkprogramm) des Edison zu 
benutzen ist die Bibliothek mraa notwendig. Diese wurde auch erfolgreich 
wie hier: https://github.com/intel-iot-devkit/mraa beschrieben mit 
folgenden Befehlen installiert:
1
echo "src mraa-upm http://iotdk.intel.com/repos/1.1/intelgalactic" > /etc/opkg/mraa-upm.conf
2
opkg update
3
opkg install libmraa0

So, das Testprogramm helloMraa
1
#include "mraa.h"
2
int
3
main(int argc, char **argv)
4
{
5
  char* board_name = mraa_get_platform_name();
6
  fprintf(stdout, "hello mraa\n Version: %s\n Running on %s\n", mraa_get_version(), board_name);
7
  mraa_deinit();
8
  return MRAA_SUCCESS;
9
}
lässt sich aber leider nicht kompilieren und ich weis nicht warum...

Fehlermeldung:
root@Edison:~/build# gcc -o helloMraa helloMraa.c
/tmp/ccxXgMSp.o: In function `main':
helloMraa.c:(.text+0xa): undefined reference to `mraa_get_platform_name'
helloMraa.c:(.text+0x13): undefined reference to `mraa_get_version'
helloMraa.c:(.text+0x35): undefined reference to `fprint'
helloMraa.c:(.text+0x3a): undefined reference to `mraa_deinit'
collect2: error: ld returned 1 exit status

Es wird also die Bibliothek nicht erkannt, richtig?

Ich bin für jede weiterführende Hilfe sehr dankbar!

Bitte keine Vorschläge wie: Warum benutzt du nicht die Arduino-IDE 
usw...
Ich möchte die Programme im Terminal schreiben, kompilieren und 
ausführen!
Persönliche Seite #3916427
Lesenswert?

crumbjunk schrieb:
> Es wird also die Bibliothek nicht erkannt, richtig?

"Nicht erkannt" stimmt nicht. Du hast beim Compileraufruf nicht 
angegeben, daß die Library gelinkt werden soll. Nur durch das Einbinden 
einer Headerdatei geschieht das nicht, sondern das ist eine 
Kommandozeilenoption des Compilers/Linkers. Bei gcc ist das -l, wobei 
die Konvention ist, daß der Dateiname mit "lib" beginnt, und das "lib" 
weggelassen wird.

Heißt die Library also "libmraa", lautet die Kommandozeilenoption -lmraa
Gast #3917572
Lesenswert?

Hi Rufus,

danke dir für deine Hilfe. Ich kann es leider nicht ausprobieren, weil 
mein Edison heute leider keine Lust hat. Er rebootet wie verrückt und 
nach dem erneuten Flashen, möchte er sich nicht mehr ins wLan 
einloggen...

Sobald ich soweit komme es zu versuchen, melde ich mich wieder...

Vielen Dank bis dahin.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren