Programm aus Source-Package kompilieren / debuggen

Vom einfachen Programm zum fertigen Debian-Paket, Fragen rund um Programmiersprachen, Scripting und Lizenzierung.
Antworten
zwiebelchen
Beiträge: 138
Registriert: 31.03.2011 12:51:42

Programm aus Source-Package kompilieren / debuggen

Beitrag von zwiebelchen » 27.12.2013 20:33:00

Hi,

ich wollte mich gerade mal daran versuchen, ein Paket als Quellcode zu laden, es zu ändern und anschließend zu kompilieren und zu debuggen.

Aktueller Stand:
-Paket geholt und entpackt
-build-dependencies installiert
-kleinere Änderungen gemacht

Was ich nun möchte:
-das Ganze kompilieren
-Step-By-Step-Debugging (kann ich es evtl. sogar mit Eclipse-CDT ?)
-es soll sich erstmal alles nur als Duplikat im Home-Verzeichnis abspielen, also NICHT die bereits reguläre Version des Programms auf meinem System ersetzt werden

Achso, und hier mal der Paketname:
es handelt sich um Brasero...
Debian 7 Wheezy mit Gnome 3 auf Xeon 1230V2, Asus P8H77, 16 GB DDR3, 120 GB Samsung 830 SSD, Gigabyte GTX 660

Cae
Beiträge: 6349
Registriert: 17.07.2011 23:36:39
Wohnort: 2130706433

Re: Programm aus Source-Package kompilieren / debuggen

Beitrag von Cae » 27.12.2013 21:31:16

Der Eintrag im Debian-Wiki [1] beschreibt deinen Anwendungsfall eigentlich ganz gut. Allerdings steht da nicht, wie innerhalb des Pakets gebaute Bibliotheken verwendet werden (per $LD_LIBRARY_PATH).

In NoPaste-Eintrag37565 findest du ein Transkript von meinem Versuch, der letztendlich wegen irgendwelcher glib-internen Scheisse fehlschlaegt. Vor dem Bauen nehme ich eine beispielhafte Aenderung mittels

Code: Alles auswählen

sed -i '/PACKAGE_STRING/s/"$/ with unicorn powers&/' config.h
vor; du wirst da sicher etwas sinnvolleres dran editieren koennen. Die Optionen bzw. Umgebungsvariablen

Code: Alles auswählen

DEB_BUILD_OPTIONS=nostrip,noopt
verhindern, dass Debugging-Informationen gestript werden (und noopt deaktiviert Optimierungen, die den Vergleich zwischen Quell- und Binaercode verkomplizieren wuerden).

Nach der Meldung

Code: Alles auswählen

debian/tmp/usr/bin/brasero: error while loading shared libraries: libbrasero-media3.so.1: cannot open shared object file: No such file or directory
versuche ich, die vermissten dynamisch gelinkten Bibliotheken zu finden, welche sich offensichtlich unter debian/tmp/usr/lib/ befinden. Daher starte ich das Programm nun mit der Umgebungsvariable

Code: Alles auswählen

LD_LIBRARY_PATH=debian/tmp/usr/lib/:$LD_LIBRARY_PATH
-- woraufhin es startet, um anschliessend haengenzubleiben... der letzte Befehl zeigt beispielhaft, wie man im Debugger Debiangdb im Code herumsteppen koennte.

Gruss Cae

[1] https://wiki.debian.org/BuildingTutorial
If universal surveillance were the answer, lots of us would have moved to the former East Germany. If surveillance cameras were the answer, camera-happy London, with something like 500,000 of them at a cost of $700 million, would be the safest city on the planet.

—Bruce Schneier

Antworten