zu www.bildungsgueter.de zur Inhaltsübersicht des Kapitels

Besonderheiten von TinkerOS

Verwendung des Dateibrowsers PCManFM


Problembeschreibung

Bei der Verwendung des Dateibrowsers PCManFM fällt in TinkerOS 2.0.8 (und auch in früheren Versionen) auf, dass ausführbare Programme nicht durch Doppelklick gestartet werden können. In anderen Linux-Distributionen ist dies in PCManFM möglich. Die Ursache des unterschiedlichen Verhaltens von PCManFM in TinkerOS ist unklar.

Allerdings besteht bei Verwendung der Programmiersprachen C, C++ und Ada die Möglichkeit, Programme mit der Option -no-pie zu binden und so doch Executables herzustellen die mit Doppelklick gestartet werden können.

Vorgehen für C

Wenn eine oder mehrere Quelldateien mit einem einzigen Aufruf des Compilers gcc compiliert und gebunden werden sollen, wird der Compiler mit der Option -no-pie aufgerufen.

Wenn Compilierung und Binden durch getrennte Aufrufe von gcc bewirkt werden, wird die Option -no-pie nur für den Aufruf benötigt, der das Binden bewirkt.

Wenn mit einem Makefile compiliert wird, sind Compilierung und Binden in der Regel getrennt; es gilt dann obiger Hinweis. Es düfte gute Praxis sein, die Optionen für das Binden als Wert einer Variablen bereitzuhalten.

LDFLAGS = `pkg-config $(GUI) --libs` -no-pie

Vorgehen für C++ bei Verwendung mit Gtk

Wenn eine oder mehrere Quelldateien mit einem einzigen Aufruf des Compilers g++ compiliert und gebunden werden sollen, wird der Compiler mit der Option -no-pie aufgerufen.

Wenn Compilierung und Binden durch getrennte Aufrufe von g++ bewirkt werden, wird die Option -no-pie nur für den Aufruf benötigt, der das Binden bewirkt.

Wenn mit einem Makefile compiliert wird, sind Compilierung und Binden in der Regel getrennt; es gilt dann obiger Hinweis. Es düfte gute Praxis sein, die Optionen für das Binden als Wert einer Variablen bereitzuhalten.

LDFLAGS = `pkg-config gtk+-3.0 --libs` -no-pie

Vorgehen für C++ bei Verwendung mit Qt

In die Projektdatei ist die Zeile

QMAKE_LFLAGS += -no-pie

einzufügen. Die Hilfsprogramm qmake erzeugt dann ein Makefile, das die Option -no-pie für das Binden des Programms verwendet.

Vorgehen für Ada

In der Projektdatei sollte die folgende Angabe stehen:

    package Linker is
       for Default_Switches("Ada") use
          ( "-no-pie");
    end Linker;

Eine vollständige Projektdatei für ein kleines oder mittleres Programmierprojekt mit GtkAda könnte etwa so aussehen:

with "gtkada";
project Bttn001 is
	for Source_Dirs use ("inc", "src");
	for Object_Dir use "obj";
	for Main use ("main.adb");
	for Exec_Dir use ".";

    package Linker is
       for Default_Switches("Ada") use
          ( "-no-pie");
    end Linker;
end Bttn001;

Projektdateien aller in diesem Tutorial für TinkerOS bereitgestellten Ada-Programme enthalten die hier gezeigte Linker-Option.


zur Inhaltsübersicht des Kapitels