17.11.2013, 06:51
Um vielleicht etwas Licht ins Dunkel zu bringen:
1. Da die BlitzLibs von AB3 neuer sind als von BB2, sind sie vermutlich auch einen Tick größer. Daher die größere Excutable.
2. BlitzLibs werden IMMER komplett dazugelinked. "Make Smallest Code" ändert daran nichts.
3. "Make Smallest Code" >< "Function Optimizer"
"Make Smallest Code" macht 2 Compiler Läufe, um die Executable auf Größe zu trimmen. Das ist rein technischer Natur und keine Dead-Code Elemination. Das gab es auch schon in BB2.
Der "Function Optimizer" kam erst mit AB2.4 und entfernt nicht referenzierte Funktionen aus dem Binary (Dead Code). Dazu braucht der Compiler mehrere Läufe, je nachdem wie stark die Funktionen verschachtelt sind. Früher hat Bernd einfach mal 10 Läufe gemacht und gut ist. In vielen Fällen reicht das auch, in vielen ist das aber auch unnötig. AB3 macht derzeit so viele, bis die Executable nicht mehr kleiner wird. Ich glaube als Maximum immer noch 10.
Entfernt werden aber nur Amiblitz Funktionen, keine BlitzLib Funktionen/Anweisungen.
Zum Konvertieren:
Entweder:
- In BB2 reinladen und als ASCII speichern, dann wieder in AB3 reinladen, idealerweise als .ab3 weiterarbeiten.
Oder:
- Amiblitz3 mit den Deflibs deiner BB2 Installation starten (ja, das geht per Tooltype LIBFILE="Blitz3:Blitzlibs/Deflibs"!). Per CLI Interface kann man dann auch wesentlich schneller konvertieren, falls das viele Files betrifft. (>>10)
Bei deinen speziellen BlitzLibs würde ich schauen, ob du die wirklich brauchst. Die meisten und "uns" bekannten sind in den AB3 Deflibs drin.
Falls es eigene sind die du selbst geschrieben hast, würde ich sie lieber direkt einbinden als Include und Funktionen draus machen.
Wenn das lediglich Stubs für Amiga Shared Libaries sind, gibt es einen besseren Weg das als Include einzubinden.
AB3 bietet auch die Möglichkeit, einzelne Libs dazuzuladen wenn man sie ins "beta" Verzeichnis reinkopiert. Dann muss man aber aufpassen dass die Lib IDs passen, damit es keine Clashes gibt, d.h. du müsstest die LibIDs per BlitzLibMan oder ähnlichem Tool anpassen. Eine Liste der besetzten IDs gibts in der Distro.
P.S. Von allen Libs, die mit "N" anfangen, würde ich Abstand nehmen. Die sind nicht stabil und in unfertigem Zustand stehen geblieben. Wenn du deine Executable möglichst klein haben willst, dann benutze AmigaOS direkt. Das RKM ist dein Freund (zum Teil in Ab3 mit drin)
1. Da die BlitzLibs von AB3 neuer sind als von BB2, sind sie vermutlich auch einen Tick größer. Daher die größere Excutable.
2. BlitzLibs werden IMMER komplett dazugelinked. "Make Smallest Code" ändert daran nichts.
3. "Make Smallest Code" >< "Function Optimizer"
"Make Smallest Code" macht 2 Compiler Läufe, um die Executable auf Größe zu trimmen. Das ist rein technischer Natur und keine Dead-Code Elemination. Das gab es auch schon in BB2.
Der "Function Optimizer" kam erst mit AB2.4 und entfernt nicht referenzierte Funktionen aus dem Binary (Dead Code). Dazu braucht der Compiler mehrere Läufe, je nachdem wie stark die Funktionen verschachtelt sind. Früher hat Bernd einfach mal 10 Läufe gemacht und gut ist. In vielen Fällen reicht das auch, in vielen ist das aber auch unnötig. AB3 macht derzeit so viele, bis die Executable nicht mehr kleiner wird. Ich glaube als Maximum immer noch 10.
Entfernt werden aber nur Amiblitz Funktionen, keine BlitzLib Funktionen/Anweisungen.
Zum Konvertieren:
Entweder:
- In BB2 reinladen und als ASCII speichern, dann wieder in AB3 reinladen, idealerweise als .ab3 weiterarbeiten.
Oder:
- Amiblitz3 mit den Deflibs deiner BB2 Installation starten (ja, das geht per Tooltype LIBFILE="Blitz3:Blitzlibs/Deflibs"!). Per CLI Interface kann man dann auch wesentlich schneller konvertieren, falls das viele Files betrifft. (>>10)
Bei deinen speziellen BlitzLibs würde ich schauen, ob du die wirklich brauchst. Die meisten und "uns" bekannten sind in den AB3 Deflibs drin.
Falls es eigene sind die du selbst geschrieben hast, würde ich sie lieber direkt einbinden als Include und Funktionen draus machen.
Wenn das lediglich Stubs für Amiga Shared Libaries sind, gibt es einen besseren Weg das als Include einzubinden.
AB3 bietet auch die Möglichkeit, einzelne Libs dazuzuladen wenn man sie ins "beta" Verzeichnis reinkopiert. Dann muss man aber aufpassen dass die Lib IDs passen, damit es keine Clashes gibt, d.h. du müsstest die LibIDs per BlitzLibMan oder ähnlichem Tool anpassen. Eine Liste der besetzten IDs gibts in der Distro.
P.S. Von allen Libs, die mit "N" anfangen, würde ich Abstand nehmen. Die sind nicht stabil und in unfertigem Zustand stehen geblieben. Wenn du deine Executable möglichst klein haben willst, dann benutze AmigaOS direkt. Das RKM ist dein Freund (zum Teil in Ab3 mit drin)