Codeblocks: Release-Version als Shared library??

OP #7412524
Lesenswert?

Code::Blocks Version 20.03 unter Linux Mint

Programm erstellt, Debug-Version aus Codeblocks heraus gestartet läuft einwandfrei. Wenn ich in den Release-Ordner gehe und das dortige Programm starten will, möchte Linux ein Programm zum öffnen der Datei haben und erkennt mein Programm als "Gemeinsame Bibliothek". Wenn ich ein Terminal an dieser Stelle aufmache, kann ich mein Programm ohne Probleme starten; läuft. Build Einstellung habe ich mal auf "Konsole-Applikation" und mal auf "GUI-Applikation" gestellt- keine Änderung.

Irgendwelche Tips?

Axel F.

#7412572
Lesenswert?

Axel V. schrieb:

Kannst Du mir etwas mehr über die Problematik erzählen?

Einmal ist es ein: ELF 64-bit LSB pie executable, x86-64, version 1 (SYSV), dynamically linked, interpreter /lib64/ld-linux-x86-64.so.2, for GNU/Linux 3.2.0 und ansonsten ein: ELF 64-bit LSB executable, x86-64, version 1 (SYSV), dynamically linked

Der Unterschied ist, dass das PIE-Executable beim Start vom ld.so an eine zufällige Speicheradresse geladen wird, und damit einen Schutz vor manchen Angriffen bietet, weil der Exploit-Payload keine bekannten Funktionsadressen/Speicherstellen mehr voraussetzen kann.

Problem: die Mime-Typ-Erkennung deines Filemanagers erkennt diese Executables als .so - Bibliothek, nicht als ausführbares Programm, und will sie deshalb nicht starten.

Vergleich mal die Ausgabe von "file meinProgramm" und "xdg-mime query filetype meinProgramm", für die PIE und !PIE-Compilate, da wird das Problem deutlich.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren