Closed mrdudz closed 2 years ago
Stimmt jetzt wo du es sagst. :) Verstehe ich gar nicht, sollte ja nur beim bin file Sinn machen. Muss ich mal schauen wie ich qmake dazu bringe das nicht bei allen Dateien zu machen. Muss ich mir mal die pro Datei genauer anschauen.
Das war durch Verkettung seltsamer Umstände sogar schon mal ein Problem beim Testen des FreeBSD ports. Das strip
tool hinterlässt temporäre Files im Fehlerfall, und die sorgen dann für Fehler wenn der Inhalt der staging-area mit den Angaben in pkg-plist
(wo die Dateien drin stehen, die ins Package gehören) verglichen wird.
Hab es bisher ignoriert, weil es tatsächlich mehr ein "Schönheitsfehler" ist. Aber ein Fix wäre in der Tat nett ;)
Ich schaue es mir gerade an und durchstöber die qmake Manual :)
Am Ende hat es gereicht in der emu64.pro zu CONFIG "nostrip" hinzuzufügen. Nun wird bei make install kein strip mehr ausgeführt.
Erledigt!
Öh, Sekunde. Binaries sollten gestrippt sein. Funktioniert das noch?
BTW, will niemanden nerven. Es gibt (leider) mehr als genug Projekte, die das Thema komplett ignorieren, dann kümmert sich halt der jeweilige Mainteiner eines Linux-Package oder BSD-Ports darum, dass die binaries gestrippt werden. Aber schöner/richtiger ist es, wenn das upstream Buildsystem das macht.
Einfach testbar ist das Resultat mit dem Tool file
-- das gibt bei binaries unter anderem stripped
oder non-stripped
aus :)
Wie kann ich das überprüfen? Ich dachte wenn man ein release erstellt sind ja eh keine Symbole mit bei. Also würde ja srip eh nichts mehr entfernen können. Ich hatte geschaut und die binarys sind unter linux und windows kleiner als die debug varianten.
Antwort kam mal wieder schneller wie ich sie gestellt habe :)
file ./emu64
./emu64: ELF 64-bit LSB pie executable, x86-64, version 1 (GNU/Linux), dynamically linked, interpreter /lib64/ld-linux-x86-64.so.2, BuildID[sha1]=7070518c20504a6f5a0ceb8691ee3758debb269d, for GNU/Linux 3.2.0, not stripped
Symbole für Funktionen und "static" data sind leider immer da ;) Weitergehende Symbole (Referenzen zur source-line, Namen lokaler variablen, usw) sind nur in "debug" builds da. Aber alle diese Symbole sind überflüssig wenn man nicht debuggen will ;)
Deshalb ist "strippen" best practice ....
Und ja, in deiner Ausgabe steht am Ende "not stripped", das heißt die Symbols für Funktionen etc sind noch drin...
Wer richtig lesen kann ist klar im Vorteil ;)
Ich schaue mal, ich glaube man kann das speziell für ein File angeben. Meld mich wenn ich es gefunden habe. :)
Übrigens erinnere ich mich, dass ich damals, als ich über dieses Problem gestolpert bin, nach kurzer Recherche kein Bock hatte herauszufinden, wie man das mit "qmake" richtig macht :-D Naja, viel Spaß, und danke fürs analysieren.
Hab's rausgefunden und funktioniert jetzt. Der Trick ist "nostrip" nicht Global in CONFIG zu setzen sondern nur für die jeweilige Resource:
Bsp.:
roms.CONFIG += nostrip
Hier mein Ergebnis bei make install
make install
cd src/ && ( test -e Makefile || /usr/lib/qt5/bin/qmake -o Makefile /home/thorsten/Programmierung/Aktuelle_Projekte/emu64/src/src.pro -spec linux-g++ PREFIX=/home/thorsten/Programmierung/Aktuelle_Projekte/emu64/build/install_linux ) && make -f Makefile install
make[1]: Verzeichnis „/home/thorsten/Programmierung/Aktuelle_Projekte/emu64/build/Desktop_Qt_5_12_4_GCC_64bit_System/Release/src“ wird betreten
/usr/lib/qt5/bin/qmake -install qinstall -exe emu64 /home/thorsten/Programmierung/Aktuelle_Projekte/emu64/build/install_linux/bin/emu64
strip /home/thorsten/Programmierung/Aktuelle_Projekte/emu64/build/install_linux/bin/emu64
/usr/lib/qt5/bin/qmake -install qinstall -exe /home/thorsten/Programmierung/Aktuelle_Projekte/emu64/roms/1541.rom /home/thorsten/Programmierung/Aktuelle_Projekte/emu64/build/install_linux/share/emu64/roms/1541.rom
/usr/lib/qt5/bin/qmake -install qinstall -exe /home/thorsten/Programmierung/Aktuelle_Projekte/emu64/roms/basic.rom /home/thorsten/Programmierung/Aktuelle_Projekte/emu64/build/install_linux/share/emu64/roms/basic.rom
/usr/lib/qt5/bin/qmake -install qinstall -exe /home/thorsten/Programmierung/Aktuelle_Projekte/emu64/roms/char.rom /home/thorsten/Programmierung/Aktuelle_Projekte/emu64/build/install_linux/share/emu64/roms/char.rom
/usr/lib/qt5/bin/qmake -install qinstall -exe /home/thorsten/Programmierung/Aktuelle_Projekte/emu64/roms/kernal.rom /home/thorsten/Programmierung/Aktuelle_Projekte/emu64/build/install_linux/share/emu64/roms/kernal.rom
/usr/lib/qt5/bin/qmake -install qinstall -exe /home/thorsten/Programmierung/Aktuelle_Projekte/emu64/floppy_sounds/anschlag.raw /home/thorsten/Programmierung/Aktuelle_Projekte/emu64/build/install_linux/share/emu64/floppy_sounds/anschlag.raw
/usr/lib/qt5/bin/qmake -install qinstall -exe /home/thorsten/Programmierung/Aktuelle_Projekte/emu64/floppy_sounds/hinweis.txt /home/thorsten/Programmierung/Aktuelle_Projekte/emu64/build/install_linux/share/emu64/floppy_sounds/hinweis.txt
/usr/lib/qt5/bin/qmake -install qinstall -exe /home/thorsten/Programmierung/Aktuelle_Projekte/emu64/floppy_sounds/motor.raw /home/thorsten/Programmierung/Aktuelle_Projekte/emu64/build/install_linux/share/emu64/floppy_sounds/motor.raw
/usr/lib/qt5/bin/qmake -install qinstall -exe /home/thorsten/Programmierung/Aktuelle_Projekte/emu64/floppy_sounds/motor_off.raw /home/thorsten/Programmierung/Aktuelle_Projekte/emu64/build/install_linux/share/emu64/floppy_sounds/motor_off.raw
/usr/lib/qt5/bin/qmake -install qinstall -exe /home/thorsten/Programmierung/Aktuelle_Projekte/emu64/floppy_sounds/motor_on.raw /home/thorsten/Programmierung/Aktuelle_Projekte/emu64/build/install_linux/share/emu64/floppy_sounds/motor_on.raw
/usr/lib/qt5/bin/qmake -install qinstall -exe /home/thorsten/Programmierung/Aktuelle_Projekte/emu64/floppy_sounds/stepper_dec.raw /home/thorsten/Programmierung/Aktuelle_Projekte/emu64/build/install_linux/share/emu64/floppy_sounds/stepper_dec.raw
/usr/lib/qt5/bin/qmake -install qinstall -exe /home/thorsten/Programmierung/Aktuelle_Projekte/emu64/floppy_sounds/stepper_inc.raw /home/thorsten/Programmierung/Aktuelle_Projekte/emu64/build/install_linux/share/emu64/floppy_sounds/stepper_inc.raw
/usr/lib/qt5/bin/qmake -install qinstall /home/thorsten/Programmierung/Aktuelle_Projekte/emu64/grafik/kreis0.png /home/thorsten/Programmierung/Aktuelle_Projekte/emu64/build/install_linux/share/emu64/gfx/kreis0.png
/usr/lib/qt5/bin/qmake -install qinstall /home/thorsten/Programmierung/Aktuelle_Projekte/emu64/grafik/kreis1.png /home/thorsten/Programmierung/Aktuelle_Projekte/emu64/build/install_linux/share/emu64/gfx/kreis1.png
/usr/lib/qt5/bin/qmake -install qinstall /home/thorsten/Programmierung/Aktuelle_Projekte/emu64/grafik/pfeil0.png /home/thorsten/Programmierung/Aktuelle_Projekte/emu64/build/install_linux/share/emu64/gfx/pfeil0.png
/usr/lib/qt5/bin/qmake -install qinstall /home/thorsten/Programmierung/Aktuelle_Projekte/emu64/grafik/pfeil1.png /home/thorsten/Programmierung/Aktuelle_Projekte/emu64/build/install_linux/share/emu64/gfx/pfeil1.png
/usr/lib/qt5/bin/qmake -install qinstall /home/thorsten/Programmierung/Aktuelle_Projekte/emu64/grafik/sdl_icon.png /home/thorsten/Programmierung/Aktuelle_Projekte/emu64/build/install_linux/share/emu64/gfx/sdl_icon.png
/usr/lib/qt5/bin/qmake -install qinstall -exe /home/thorsten/Programmierung/Aktuelle_Projekte/emu64/kommandozeilenparameter.txt /home/thorsten/Programmierung/Aktuelle_Projekte/emu64/build/install_linux/share/doc/emu64/kommandozeilenparameter.txt
/usr/lib/qt5/bin/qmake -install qinstall /home/thorsten/Programmierung/Aktuelle_Projekte/emu64/hotkeys.txt /home/thorsten/Programmierung/Aktuelle_Projekte/emu64/build/install_linux/share/doc/emu64/hotkeys.txt
/usr/lib/qt5/bin/qmake -install qinstall -exe /home/thorsten/Programmierung/Aktuelle_Projekte/emu64/LICENSE /home/thorsten/Programmierung/Aktuelle_Projekte/emu64/build/install_linux/share/doc/emu64/LICENSE
/usr/lib/qt5/bin/qmake -install qinstall -exe /home/thorsten/Programmierung/Aktuelle_Projekte/emu64/änderungen.txt /home/thorsten/Programmierung/Aktuelle_Projekte/emu64/build/install_linux/share/doc/emu64/änderungen.txt
install -m 644 -p .qm/emu64_de.qm /home/thorsten/Programmierung/Aktuelle_Projekte/emu64/build/install_linux/share/emu64/languages; install -m 644 -p .qm/emu64_en.qm /home/thorsten/Programmierung/Aktuelle_Projekte/emu64/build/install_linux/share/emu64/languages;
/usr/lib/qt5/bin/qmake -install qinstall /home/thorsten/Programmierung/Aktuelle_Projekte/emu64/grafik/flaggen/emu64_de.png /home/thorsten/Programmierung/Aktuelle_Projekte/emu64/build/install_linux/share/emu64/languages/emu64_de.png
/usr/lib/qt5/bin/qmake -install qinstall /home/thorsten/Programmierung/Aktuelle_Projekte/emu64/grafik/flaggen/emu64_en.png /home/thorsten/Programmierung/Aktuelle_Projekte/emu64/build/install_linux/share/emu64/languages/emu64_en.png
/usr/lib/qt5/bin/qmake -install qinstall /home/thorsten/Programmierung/Aktuelle_Projekte/emu64/grafik/emu64.png /home/thorsten/Programmierung/Aktuelle_Projekte/emu64/build/install_linux/share/icons/hicolor/64x64/apps/emu64.png
/usr/lib/qt5/bin/qmake -install qinstall -exe /home/thorsten/Programmierung/Aktuelle_Projekte/emu64/src/emu64.desktop /home/thorsten/Programmierung/Aktuelle_Projekte/emu64/build/install_linux/share/applications/emu64.desktop
make[1]: Verzeichnis „/home/thorsten/Programmierung/Aktuelle_Projekte/emu64/build/Desktop_Qt_5_12_4_GCC_64bit_System/Release/src“ wird verlassen`
file ./emu64
./emu64: ELF 64-bit LSB pie executable, x86-64, version 1 (GNU/Linux), dynamically linked, interpreter /lib64/ld-linux-x86-64.so.2, BuildID[sha1]=7070518c20504a6f5a0ceb8691ee3758debb269d, for GNU/Linux 3.2.0, stripped
Cool. Ist emu64
das einzige binary? Also keine shared libs / plugins und dergleichen? Wenn ja: fixed!
Wird mir definitiv helfen beim nächsten update des FreeBSD ports, danke ;)
emu64 ist die einzige Binary die erzeugt wird. :)
Fixed!
sicher nur ein kosmetisches problem, aber auch nicht die feine englische Art :)