Frage bezüglich dynamisches und statischem Linken



  • Hallo zusammen,

    ich arbeite mit dem Dev-C++ und wollte die Größe meiner EXE etwas reduzieren.
    Also habe ich gegoogelt und habe gelesen das nicht gegen die C Runtime gelinkt werden soll.
    Deshalb bin ich in die Linker Einstellungen gegangen und haben die Option gesetzt "Keine Standard-Bibliotheken benutzen"

    Jetzt ist es mir aber leider nicht mehr möglich mein Projekt zu kompilieren:

    C:\Users\HartmannPC\AppData\Local\Temp\cclKp2qd.o:main.c: undefined reference to malloc' C:\\Users\\HartmannPC\\AppData\\Local\\Temp\\cclKp2qd.o:main.c: undefined reference tomalloc'
    C:\Users\HartmannPC\AppData\Local\Temp\cclKp2qd.o:main.c: undefined reference to memset' C:\\Users\\HartmannPC\\AppData\\Local\\Temp\\cclKp2qd.o:main.c: undefined reference tomemset'
    C:\Users\HartmannPC\AppData\Local\Temp\cclKp2qd.o:main.c: undefined reference to \_imp\_\_RegOpenKeyExA@20' C:\\Users\\HartmannPC\\AppData\\Local\\Temp\\cclKp2qd.o:main.c: undefined reference to_imp__RegQueryValueExA@24'
    C:\Users\HartmannPC\AppData\Local\Temp\cclKp2qd.o:main.c: undefined reference to \_imp\_\_RegCloseKey@4' C:\\Users\\HartmannPC\\AppData\\Local\\Temp\\cclKp2qd.o:main.c: undefined reference tostrcpy'
    C:\Users\HartmannPC\AppData\Local\Temp\cclKp2qd.o:main.c: undefined reference to free' C:\\Users\\HartmannPC\\AppData\\Local\\Temp\\cclKp2qd.o:main.c: undefined reference tofree'
    C:\Users\HartmannPC\AppData\Local\Temp\cclKp2qd.o:main.c: undefined reference to __main' C:\\Users\\HartmannPC\\AppData\\Local\\Temp\\cclKp2qd.o:main.c: undefined reference tomemset'
    C:\Users\HartmannPC\AppData\Local\Temp\cclKp2qd.o:main.c: undefined reference to `printf'

    Ich bin eigentlich davon ausgegangen das jetzt dynamisch gelinkt wird und er auf die DLLs vom VCRedist drauf zugreift. Kann mir jemand das bitte mal mit dem Linker erklären ? Was muss ich jetzt tun um mein kompilieren zu können ?
    Müssen Windows APIs mittels LoadLibrary etc. geladen werden ?
    Und wie gehe ich mit den Standard C Funktionen um ?

    Viele Grüße



  • Warum willst du überhaupt die Größe deiner EXE reduzieren? Der Linker packt sowieso beim statischen Linken nur die Funktionen dazu, welche auch benutzt werden.
    Und beim dynamischen Linken wird die EXE zwar generell kleiner, aber beim Starten der EXE werden dann alle benötigten Libs in den RAM geladen.


Anmelden zum Antworten