Linker Config Datei

Hier könnt Ihr gute, von Euch geschriebene Codes posten. Sie müssen auf jeden Fall funktionieren und sollten möglichst effizient, elegant und beispielhaft oder einfach nur cool sein.
Benutzeravatar
cxAlex
Beiträge: 2111
Registriert: 26.06.2008 10:42

Linker Config Datei

Beitrag von cxAlex »

In den Compiler - Optionen gibt es die Möglichkeit eine Linker Config Datei anzugeben. Haben wohl noch nicht so viele gemacht. Drum hab ich hier mal eine erstellt die ich recht gerne benutze:

Code: Alles auswählen

/LARGEADDRESSAWARE /RELEASE /OPT:REF /OPT:NOWIN98 /DEBUG:NO
Erklärung:

/LARGEADDRESSAWARE: Sorgt dafür dass das Programm unter 32 Bit bei aktivierten /pae - Switch des Os > 2GB ansprechen kann.
/RELEASE: Sorgt dafür das die Image-Checksumme korrekt in den Header geschrieben wird
/OPT:REF: Der Linker führt einen zusätzlichen Durchlauf zwecks Entfernung unnötiger Segmente durch
/OPT:NOWIN98: Ändert die Page-Größe auf 512 Bytes statt 4Kb.
/DEBUG:NO: Schaltet jegliches Debugging seitens des OS ab (Auch wenn der OS - Switch /nodebug nicht gesetzt ist)

Gruß, Alex
Projekte: IO.pbi, vcpu
Pausierte Projekte: Easy Network Manager, µC Emulator
Aufgegebene Projekte: ECluster

Bild

PB 5.1 x64/x86; OS: Win7 x64/Ubuntu 10.x x86
Benutzeravatar
Kurzer
Beiträge: 1618
Registriert: 25.04.2006 17:29
Wohnort: Nähe Hamburg

Beitrag von Kurzer »

Danke für die Info Alex. Ich werde das bei Zeiten mal ausprobieren.
Klingt erstmal so, als würde man damit kleinere Exen erzeugen können (= Müll wird entfernt, kleinere Page-Größe), was mir sehr entgegen kommt.

Wo hast Du die Info zu dem linker her?

Ich habe gerade in der Mittagspause mal ein bißchen gegoogled. So ganz peil ich die Hintergründe von PB noch nicht ganz, aber es scheint ja so zu sein, daß PB einen Linker von "Pelles C" benutzt? Stimmt das? Würde mich nicht wundern, denn der nachgeschaltete Assembler ist ja auch ein "Drittprodukt".

Nicht, daß ich da was gegen hätte, aber diese Zusammenhänge (so es denn welche gibt) könnten ruhig mal ein bißchen in der Hilfedatei breitgetreten werden.
Vielleicht schnall ich's auch einfach nur nicht, weil ich niemals C programmiert habe und daher nicht mit linken und compilieren in Berührung gekommen bin.

Wenn man mit diesem Wissen (siehe Deine Linkerdatei) aber postiven Einfluß auf die zu erzeugende Exe nehmen kann, dann kann man das ruhig in der HIlfedatei mit aufführen, finde ich.

Irgendwie hab ich das Gefühl, man kann eine ganze Menge mehr machen mit dem Zeug, mit dem PB 'intern' arbeitet. Man muß nur wissen wie.
"Never run a changing system!" | "Unterhalten sich zwei Alleinunterhalter... Paradox, oder?"
PB 6.12 x64, OS: Win 11 24H2 x64, Desktopscaling: 150%, CPU: I7 12700 H, RAM: 32 GB, GPU: Intel(R) Iris(R) Xe Graphics | NVIDIA GeForce RTX 3070
Useralter in 2025: 57 Jahre.
Benutzeravatar
ZeHa
Beiträge: 4760
Registriert: 15.09.2004 23:57
Wohnort: Friedrichshafen
Kontaktdaten:

Beitrag von ZeHa »

Ich kompiliere inzwischen auch "von Hand", damit ich bspw. mehrere Versionen gleichzeitig kompilieren kann (z.B. Debug- und Release-Version), dafuer habe ich mir auch ein kleines Build-Script geschrieben (in Form einer .bat-Datei), welches ich mit Parametern aufrufen kann. Bei Gelegenheit bzw. bei Interesse kann ich das hier auch mal posten, auf lange Sicht gesehen ist das meiner Meinung nach nuetzlicher als immer nur in der IDE zu kompilieren.
Bild     Bild

ZeHa hat bisher kein Danke erhalten.
Klicke hier, wenn Du wissen möchtest, woran ihm das vorbeigeht.
Benutzeravatar
Kurzer
Beiträge: 1618
Registriert: 25.04.2006 17:29
Wohnort: Nähe Hamburg

Beitrag von Kurzer »

ZeHa hat geschrieben:...Bei Gelegenheit bzw. bei Interesse kann ich das hier auch mal posten, auf lange Sicht gesehen ist das meiner Meinung nach nuetzlicher als immer nur in der IDE zu kompilieren.
Zeha, ich bin voll dafür :allright:
:)
"Never run a changing system!" | "Unterhalten sich zwei Alleinunterhalter... Paradox, oder?"
PB 6.12 x64, OS: Win 11 24H2 x64, Desktopscaling: 150%, CPU: I7 12700 H, RAM: 32 GB, GPU: Intel(R) Iris(R) Xe Graphics | NVIDIA GeForce RTX 3070
Useralter in 2025: 57 Jahre.
Benutzeravatar
ZeHa
Beiträge: 4760
Registriert: 15.09.2004 23:57
Wohnort: Friedrichshafen
Kontaktdaten:

Beitrag von ZeHa »

Jo mach ich sobald ich zuhause bin :) dann editiere ich diesen Post hier...

@ Kurzers Posting unterhalb dieses Postings: Ja, die letzten beiden Tage war ich kaum zuhause :mrgreen: aber ich hoff dass ich heute abend mal dazu komm

EDIT:
Also hier dann mal ein simples Batch-File... ich empfehle die Verwendung von SciTE, mit dem sehen Batch-Files (mit Default-Einstellung) immer so unglaublich geil aus...

Code: Alles auswählen

@echo off

if _%1==_full goto FULLVERSION
if _%1==_demo goto DEMOVERSION

goto ALL



:FULLVERSION
set FULL=1
set EXENAME=theprogram-full.exe
goto BUILD


:DEMOVERSION
set FULL=0
set EXENAME=theprogram-demo.exe
goto BUILD


:ALL
call build full
call build demo
goto END


:BUILD
set EXEDIR=bin
set ICON=theprogram.ico
set MAIN=src/main.pb

if not exist %EXEDIR% md %EXEDIR%

pbcompiler %MAIN% /EXE %EXEDIR%/%EXENAME% /ICON %ICON% /DYNAMICCPU /XP /CONSTANT FULL=%FULL% /CONSTANT


:END
echo.
Das File kann nun von der Console aus geöffnet werden mit den Parametern "full" oder "demo", oder "all", was gleichzeitig auch der Default-Wert ist, sofern man ohne Parameter startet oder die .bat durch Doppelklick startet.

EDIT 2: Das Skript setzt natürlich voraus, daß sich das Verzeichnis, in dem die pbcompiler.exe liegt, im PATH befindet!
Zuletzt geändert von ZeHa am 30.07.2009 00:04, insgesamt 3-mal geändert.
Bild     Bild

ZeHa hat bisher kein Danke erhalten.
Klicke hier, wenn Du wissen möchtest, woran ihm das vorbeigeht.
Benutzeravatar
Kurzer
Beiträge: 1618
Registriert: 25.04.2006 17:29
Wohnort: Nähe Hamburg

Beitrag von Kurzer »

Jo mach ich sobald ich zuhause bin dann editiere ich diesen Post hier...
Na, ZeHa ist heute Abend wohl doch noch inner Pinte hängengeblieben - hihi ;)
"Never run a changing system!" | "Unterhalten sich zwei Alleinunterhalter... Paradox, oder?"
PB 6.12 x64, OS: Win 11 24H2 x64, Desktopscaling: 150%, CPU: I7 12700 H, RAM: 32 GB, GPU: Intel(R) Iris(R) Xe Graphics | NVIDIA GeForce RTX 3070
Useralter in 2025: 57 Jahre.
Benutzeravatar
PMV
Beiträge: 2765
Registriert: 29.08.2004 13:59
Wohnort: Baden-Württemberg

Beitrag von PMV »

Ich hab mir Pelles C mal runter geladen, um an die Doku zu kommen ...
das Kommandozeilen Programm unterstützt einige Parameter. Und das, was
cxAlex da anzeigt sind vorallem Defaulteinstellungen, sofern PB also nix
gegenteiliges setzt, greifen die so wie so. Die meisten Parameter sagen mir
aber nix und äh ... vermutlich braucht die auch keiner von uns.

MFG PMV
alte Projekte:
TSE, CWL, Chatsystem, GameMaker, AI-Game DLL, Fileparser, usw. -.-
Benutzeravatar
Thorium
Beiträge: 1722
Registriert: 12.06.2005 11:15
Wohnort: Germany
Kontaktdaten:

Beitrag von Thorium »

Ich hab mal nen "richtiges" DOS-Programm als DOS-Stub in eine meiner .exen Linken lassen. Das war ein Installer für ein DOS-Spiel. Wollte mal ausprobieren ob das funktioniert, dass ich eine DOS-Version und eine Windows-Version des Installers in einer .exe hab. Und es funktioniert. ^^
Zu mir kommen behinderte Delphine um mit mir zu schwimmen.

Wir fordern mehr Aufmerksamkeit für umfallende Reissäcke! Bild
Kaeru Gaman
Beiträge: 17389
Registriert: 10.11.2004 03:22

Beitrag von Kaeru Gaman »

Thorium hat geschrieben:Ich hab mal nen "richtiges" DOS-Programm als DOS-Stub in eine meiner .exen Linken lassen. Das war ein Installer für ein DOS-Spiel. Wollte mal ausprobieren ob das funktioniert, dass ich eine DOS-Version und eine Windows-Version des Installers in einer .exe hab. Und es funktioniert. ^^
:shock: kann man das irgendwo detailliert nachlesen?
würde das bedeuten, dass man alte DOS-Games in nen Starter linken kann und dann laufen sie wieder?
Der Narr denkt er sei ein weiser Mann.
Der Weise weiß, dass er ein Narr ist.
Benutzeravatar
Thorium
Beiträge: 1722
Registriert: 12.06.2005 11:15
Wohnort: Germany
Kontaktdaten:

Beitrag von Thorium »

Kaeru Gaman hat geschrieben:
Thorium hat geschrieben:Ich hab mal nen "richtiges" DOS-Programm als DOS-Stub in eine meiner .exen Linken lassen. Das war ein Installer für ein DOS-Spiel. Wollte mal ausprobieren ob das funktioniert, dass ich eine DOS-Version und eine Windows-Version des Installers in einer .exe hab. Und es funktioniert. ^^
:shock: kann man das irgendwo detailliert nachlesen?
würde das bedeuten, dass man alte DOS-Games in nen Starter linken kann und dann laufen sie wieder?
Ne.
Der DOS-Stub ist ein winziges DOS-Programm am Anfang jeder .exe. Er ist dazu da anzuzeigen dass das Programm nicht läuft, wenn es unter DOS aufgerufen wird. Dann erscheint der Satz "This program cannot be run in DOS mode." Dieser Satz wird vom DOS-Stub ausgegeben. Man kann dem Linker allerdings sagen das man nicht den Standart-Stub einlinken möchte sondern ein selbstdefiniertes DOS-Programm. Dieses wird dann gestartet, falls die .exe unter DOS ausgeführt wird.
Zu mir kommen behinderte Delphine um mit mir zu schwimmen.

Wir fordern mehr Aufmerksamkeit für umfallende Reissäcke! Bild
Antworten