mikrocontroller.net

Forum: Compiler & IDEs AVR32 - C++ kompilieren / findet Header nicht


Autor: Uwe D. (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo Leute,

ich habe unter meinem Ubuntu 9.10 ein C/C++-Programm programmiert um 
damit auf die serielle Schnittstelle zu zugreifen, funktioniert 
wunderbar. Nun wollte ich dieses Programm auf meinen neuen NGW100 zum 
laufen bringen.

Da ich für den seriellen Zugriff auf die Schnittstelle POSIX benutze, 
habe ich termios.h und ioctl.h als Header-Files eingebunden.

Nun meine Probleme/Frage:

1. Die beiden speziellen Header-Files werden beim cross-compilieren 
nicht gefunden (alle anderen scheinbar schon), wie muss ich vorgehen.

2. Wenn ich mit avr32-g++ kompiliere, bin ich mir unsicher ob hier die 
Standard-Optionen ausreichen (avr32-g++ file.cpp -o file), habe zwar 
schon andere Varianten probiert, aber gleiche in grün. Bei Google finde 
ich immer nur Anleitungen zu gcc (ging auch nich).


Ich nutze:

Ubuntu 9.10
AVR32-Toolchain 2.4.2 für Ubuntu 9.10


Hier nochmal meine Fehlermeldung vom Compiler:

In file included from dd_npb190.cpp:7:
/usr/lib/gcc/avr32/4.3.2/../../../../avr32/include/termios.h:4:25: 
error: sys/termios.h: No such file or directory
dd_npb190.cpp:9:23: error: sys/ioctl.h: No such file or directory
dd_npb190.cpp: In function 'int main()':
dd_npb190.cpp:62: error: 'select' was not declared in this scope
dd_npb190.cpp: In function 'int open_input_source(int)':
dd_npb190.cpp:237: error: aggregate 'termios options' has incomplete 
type and cannot be defined
dd_npb190.cpp:259: error: 'O_NDELAY' was not declared in this scope
dd_npb190.cpp:280: error: 'tcgetattr' was not declared in this scope
dd_npb190.cpp:292: error: 'B9600' was not declared in this scope
dd_npb190.cpp:292: error: 'cfsetspeed' was not declared in this scope
dd_npb190.cpp:293: error: 'PARENB' was not declared in this scope
dd_npb190.cpp:294: error: 'CSTOPB' was not declared in this scope
dd_npb190.cpp:295: error: 'CSIZE' was not declared in this scope
dd_npb190.cpp:296: error: 'CS8' was not declared in this scope
dd_npb190.cpp:297: error: 'CLOCAL' was not declared in this scope
dd_npb190.cpp:297: error: 'CREAD' was not declared in this scope
dd_npb190.cpp:298: error: 'ICANON' was not declared in this scope
dd_npb190.cpp:298: error: 'ECHO' was not declared in this scope
dd_npb190.cpp:298: error: 'ECHOE' was not declared in this scope
dd_npb190.cpp:298: error: 'ISIG' was not declared in this scope
dd_npb190.cpp:300: error: 'OPOST' was not declared in this scope
dd_npb190.cpp:301: error: 'VMIN' was not declared in this scope
dd_npb190.cpp:302: error: 'VTIME' was not declared in this scope
dd_npb190.cpp:305: error: 'TCIOFLUSH' was not declared in this scope
dd_npb190.cpp:305: error: 'tcflush' was not declared in this scope
dd_npb190.cpp:307: error: 'TCSAFLUSH' was not declared in this scope
dd_npb190.cpp:307: error: 'tcsetattr' was not declared in this scope


Wäre super wenn mir jemand weiterhelfen könnte.

Vielen Dank schonmal!

Gruß Uwe

Autor: mork (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Uwe D wrote:
>2. Wenn ich mit avr32-g++ kompiliere, bin ich mir unsicher ob hier die
>Standard-Optionen ausreichen (avr32-g++ file.cpp -o file), habe zwar
>schon andere Varianten probiert, aber gleiche in grün. Bei Google finde
>ich immer nur Anleitungen zu gcc (ging auch nich).

Du musst mit dem avr32-linux-g++ compilieren. Der avr32-g++ ist für 
stand-alone Anwendungen gedacht.

MfG Mork

Autor: Uwe D. (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Danke schonmal,

bei mir gibt es aber keine avr32-linux-g++, habe alle deb-Pakete vom 
Atmel-Server (http://distribute.atmel.no/tools/avr32/release/ubuntu/) 
mit apt-get installiert.

Autor: Mark .. (mork)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Den Linux-Crosscompiler gibts AFAIK überhaupt nicht als fertige binaries 
(wegen Bugs oder so), d.h. man muss ihn selbst compilieren.

Beim Buildroot für die AVR32 (http://www.atmel.no/buildroot/) ist der 
Linux-Compiler dabei, versuchs mal damit.

MfG Mark

Autor: Uwe D. (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

habe nun das buildroot-2.3.0 unter Ubuntu 8.04 erfolgreich kompiliert, 
dann mit

avr32-linux-g++ test.cpp -o test

meinen Quellcode erfolgreich ohne Fehlermeldung kompiliert!


Wenn ich jetzt aber mein Programm direkt unter dem AVR32 NGW100 (auch 
buildroot-2.3.0 von SD-Karte) mit ./test im Hauptverzeichnis / ausführe, 
erhalte ich folgende Fehlermeldung:

./test: can't load library 'libstdc++.so.6'

Liegt das am cross-compilieren oder muss ich was bei dem buildroot auf 
dem NGW100 ändern?


Vielen Danke & Gruß
Uwe

Autor: Uwe D. (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Habe jetzt mal aus "buildroot-avr32-v2.3.0/build_avr32/staging_dir/lib" 
die Datei "libstdc++.so.6.0.9" auf meine SD-Karte auf der ich mein 
Buildroot-2.3.0 für den NGW100 habe nach "/lib/libstdc++.so.6" kopiert.


Jetzt taucht der oben genannte Fehler zwar nicht mehr auf, bekomme aber 
sofort ein "Segmentation fault".


Kann mir beim kompilieren jemand weiterhelfen, da ich das Progrämm'chen 
für meine Abschlussarbet benötige, wäre super?


Danke & Gruß
Uwe

Autor: Hc Zimmerer (mizch)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Vorab:  Ich kenne das Linux auf AVR32 nicht.  Aber versuch mal, Dein 
Programm mit -static zu kompilieren.  Es wird dadurch zwar (u.U. sehr 
deutlich) größer, aber Du schließt Probleme mit inkompatiblen Libraries 
aus.

Autor: Uwe D. (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Danke dir,

durch das kopieren der libstc++ wurde das Problem ja gelöst, mein neuer 
Fehler "Segmentation fault" liegt definitiv am Quelltext, kommt auch 
wenn ich mit -static kompiliere.

Dazu werde ich aber einen neuen Thread aufmachen, passt hiert nämlich 
überhaupt nicht rein.

Danke nochmal an alle.

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.