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
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
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.
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
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
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
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.
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.
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.