71104
08-02-2006, 15:05
salve a tutti; utilizzo il MinGW su Windows e con questo vorrei riuscire a creare una immagine eseguibile privata delle librerie standard del MinGW, ma soprattutto vorrei che il vero entry point del programma (quello il cui RVA si trova negli headers) fosse la mia main, non quella quelle librerie di default del MinGW appunto. in altre parole penso che se riesco a settare la mia main come entry point dell'immagine il MinGW non avrà ragione di utilizzare anche le sue librerie predefinite... comunque mi interessa anche risparmiare spazio, quindi se per caso qualcosa delle librerie ci va a finire lo stesso mi piacerebbe sapere come eliminarla; la cosa essenziale è l'entry point. ovviamente trovandomi su Windows il formato dell'immagine che voglio produrre è il PE.
finora ho provato con la seguente command line:
gcc -std=c99 $(CFLAGS) -o prova.exe main.c -Wl,--entry,main
dove CFLAGS era definito in un altro makefile come:
export CFLAGS=-W -Wall -pedantic -static -nostdlib -nostdinc -fno-builtin -fno-exceptions -fomit-frame-pointer -ffreestanding
però così facendo ottengo un errore in fase di link:
gcc -std=c99 -W -Wall -pedantic -static -nostdlib -nostdinc -fno-builtin -fno-e
xceptions -fomit-frame-pointer -ffreestanding -o prova.exe main.c -Wl
,--entry,main
C:\MinGW\bin\..\lib\gcc-lib\mingw32\3.2.3\..\..\..\..\mingw32\bin\ld.exe: warnin
g: cannot find entry symbol main; defaulting to 00401000
C:\DOCUME~1\mrnt\IMPOST~1\Temp/cc0kaaaa.o(.text+0x9f):main.c: undefined referenc
e to `__main'
C:\DOCUME~1\mrnt\IMPOST~1\Temp/cc0kaaaa.o(.text+0xa4):main.c: undefined referenc
e to `pb'
make: *** [prova.exe] Error 1
come faccio? :help: :help: :help:
finora ho provato con la seguente command line:
gcc -std=c99 $(CFLAGS) -o prova.exe main.c -Wl,--entry,main
dove CFLAGS era definito in un altro makefile come:
export CFLAGS=-W -Wall -pedantic -static -nostdlib -nostdinc -fno-builtin -fno-exceptions -fomit-frame-pointer -ffreestanding
però così facendo ottengo un errore in fase di link:
gcc -std=c99 -W -Wall -pedantic -static -nostdlib -nostdinc -fno-builtin -fno-e
xceptions -fomit-frame-pointer -ffreestanding -o prova.exe main.c -Wl
,--entry,main
C:\MinGW\bin\..\lib\gcc-lib\mingw32\3.2.3\..\..\..\..\mingw32\bin\ld.exe: warnin
g: cannot find entry symbol main; defaulting to 00401000
C:\DOCUME~1\mrnt\IMPOST~1\Temp/cc0kaaaa.o(.text+0x9f):main.c: undefined referenc
e to `__main'
C:\DOCUME~1\mrnt\IMPOST~1\Temp/cc0kaaaa.o(.text+0xa4):main.c: undefined referenc
e to `pb'
make: *** [prova.exe] Error 1
come faccio? :help: :help: :help: