Entwicklungsumgebung¶
Eclipse benötiget für das Erstellen der Binärdateien einen Compiler für die jeweilige Plattform. Siehe Toolchain
Installation von Eclipse¶
Als nächstes erfolgt die Installation von Eclipse (CDT):
# On Ubuntu and other Debian-based operating systems
$ sudo apt install eclipse eclipse-cdt
# On ArchLinux
$ sudo pacman -S eclipse eclipse-cdt
Nun fügen wir CDT eine neue Perspektive hinzu, dazu wählen wir am oberen rechten Bildschirmrand Open Perspective. Alternativ ist dieser Punkt über das Menü unter Window -> Open Perspective -> Other… erreicht werden. Anschließend wird C/C++ gewählt.
Zudem ist es ratsam gleich eine Debug-Perspektive hinzufügen.
Plugins für Remote Debugging¶
Nun benötigen wir noch einige Plugins, dazu öffnen wir den Menüpunkt Help -> Install New Software. Unter Work with wird in der Auswahlbox All Available Site ausgewählt.
Klappen Sie nun unten den Punkt Mobile and Device Development auf, hier werden folgende Pakete zur Installation ausgewählt:
C/C++ GCC Cross Compiler Support
C/C++ GDB Hardware Debugging
c/C++ Memory View Enhancements
C/C++ Remote (over TCF/TE) Run/Debug Launcher
C/C++ Remote Launch
Remote System Explorer End User Runtime
Remote System Explorer User Actions
Target Management Terminal (Core SDK)
Nach dem Bestätigen der benötigten Lizenzen werden die Pakete heruntergeladen und installiert, das kann ein paar Minuten dauern. Danach sollte Eclipse neu gestartet werden.
Projekte verwalten¶
Als nächstes brauchen wir ein Projekt an dem wir arbeiten können. Dazu erstellen Sie entweder ein neues Projkt oder importieren eines aus ihrem bestehenden Workspace.
Nun kümmern wir um die Build Configuration, Dazu öffnen wir die Projekteigenschaften unter Project -> Properties. Falls ein Cross-Compiler Marke Eigenbau verwendet wird muss der benötigte Pfad unter Environment eingetragen werden, wird der Compiler aus den Paketquellen verwendet entfällt dieser Arbeitsschritt.
Unter Settings -> Cross-Settings wird nun das prefix des Compilers eingetragen, in unserem Fall arm-linux-gnueabi-.
In der Auswahlbox Dialect -> Language Standard kann der verwendete C-Standard eingestellt werden. Eclipse bietet uns hier die Auswahl zwischen
ISO C90
ISO C99
ISO C11
Wenn sie sich nicht sicher sind was sie auswählen sollen, lassen sie das Feld einfach leer und nehmen keine Auswahl vor. Verwenden Sie in Ihrem Project externe Header, können diese unter dem Punkt Includes hinzugefügt werden. Diese Pfadangaben werden dem Kompiler später über das Flag -I bereitgestellt.
Die Punkte Optimization bzw. Debugging bieten weiterführende Optionen an um den Optimierungsgrad und das Debugging-Level einzustellen. Denkbar wäre, das hier für Debug- oder Release - Konfigurationen unterschiedliche Werte verwendet werden.
Unter dem Punkt Warnings legen Sie All Warnings (-Wall) fest.
Kommen wir nun zum Linker, hier sollte gcc eingetragen werden. Unter Libraries können Sie festlegen, gegen welche Bibliotheken ihr Programm gelinkt werden soll, Beispiele hierfür sind pthread, crypto, oder auch sqlite3. Beachten Sie das diese Bibliotheken in der Regel vorher mit dem Cross-Compiler übersetzt werden müssen um Sie verwenden zu können.
Target - Feste IP-Adresse¶
Um die Arbeit mit dem Target-System zu vereinfachen sollte dieses eine feste IP-Adresse bekommen.
$ ifconfig eth0 192.168.2.10 netmask 255.255.255.0 up
Hosts Eintrag für das Target-System¶
Um das Target-System später per Namen (und nicht umständlich per IP-Adresse) aufrufen zu können wird ein Eintrag in /etc/hosts erstellt. Möglich macht dies die Vergabe einer festen IP-Adresse aus dem vorherigen Abschnitt.
$ 192.168.2.10 target-maschine
SSH Key generieren und übertragen¶
Um die wiederkehrende Eingabe des Pass zu vermeiden, generieren und übertragen wir einen SSH Key mit dem wir uns auf dem Target-System identifizieren können.
# on the build system, generate a key
$ ssh-keygen -t rsa -b 4096 -C "my@email.com"
# copy the public key to the target
$ ssh-copy-id root@target-maschine
Debug Configurations¶
Um nun erfolgreich Remote-Debuggen zu können sind nun ein paar Konfigurationschritte notwendig. Beginnen wir mit dem Erstellen einer neuen Debug Configuration. Dazu wählen wir im Menu Run -> Debug Configurations:
Nun erstellen Sie mit einem Doppelklick auf C/C++ Remote Application eine neue Konfiguration.
Danach empfiehlt es sich der Konfiguration unter Name einen eindeutigen Namen zu geben. Desweiteren wählen wir im Reiter Main das zugeteilte Project aus.
Nun wird im Feld C/C++ Application die ausführbare Datei ausgewählt die später auf dem Target ausgeführt werden soll.
Als nächstes müssen wir eine neue Verbindung einrichten (falls noch nicht geschehen), dazu wählen wir den Button New rechts neben Connection. Es erscheint eine Auswahlbox in der Linux ausgewählt wird.
Im nächsten Fenster gibt man den Hostnamen oder die IP des Host-Systems an. Da wird bereits in einem vorherigen Punkt den Hostnamen explizit vergeben haben, können wir diesen hier einsetzen.
Nach dem Klick auf Next wählen wir unter Files ssh.files aus:
Dann processes.shell.linux:
Als nächstes ssh.shells:
und als Letztes ssh.terminals:
Jetzt kann unter dem Punkt Connection die konfigurierte Verbindung ausgewählt werden:
Kümmern wir uns um die nächste Einstellung, wird der Remote Debugger gestartet versucht Eclipse über SFTP die ausführbare Datei an einen bestimmten Ort auf dem Target-System zu übertragen. Diesen Ort müssen wir jetzt festlegen:
Zuletzt müssen wir noch den richtigen Debugger auswählen, dazu öffnen Sie die Registerkarte Debugger. Unter GDB debugger wählen Sie nun die GDB-Version die für Ihre Remote-Architektur passt:
Mit Debug oder unter dem Debug-Icon in der Symbolleiste können Sie nun ihre Debug-Konfiguration starten und eine neue Session beginnen.