gcc sous windows et msvcrt.dll

gcc sous windows et msvcrt.dll - C - Programmation

Marsh Posté le 19-08-2003 à 00:35:45    

Salut
 
Je viens d'installer MinGW pour m'en faire une opinion (pour l'instant, que du bonheur !)
Or, il me semblait avoir lu que le compilo proposait une option pour ne pas dépendre de msvcrt.dll... en tous cas pour certaines fonctions comme printf().
Est-ce que ça existe vraiment ?
J'ai regardé la liste des options avec --help et j'ai rien trouvé de tel.
 
Autre chose, un programme hello world importe des tas de fonctions de cette dll : free, malloc, fileno, abort, atexit, setmode... pourquoi ça ?
 
pour info je compile en -fsigned-char -Wall -W -std=c99 -pedantic
 
Merci !

Reply

Marsh Posté le 19-08-2003 à 00:35:45   

Reply

Marsh Posté le 19-08-2003 à 10:03:17    

Ca me parraît bizarre cette option ...
Il s'agit peut être de l'équivalent de la procédure sous VC++ qui consiste à utiliser ta propre lib standard à toi au lieu de la lib standard ... standard, à savoir msvcrt.
Tu as quelques fonctions de substitution ici :
http://www.nopcode.com/index.shtml
Ca plus l'"Aggesssive Optimizations for VC++" tu peux arriver à un exe "Hello World" de 1Ko.
Ca utilise WriteConsole, wsprintf, lstrlen, etc ... de Windows ce qui fait gagner du code, mais ... mes tests persos ont révélés que ces fonctions (manipulation de chaines) étaient plus lentes que celles de la lib standard. Et puis msvcrt est présent sur tous les postes depuis ... longtemps.


---------------
FAQ fclc++ - FAQ C++ - C++ FAQ Lite
Reply

Marsh Posté le 20-08-2003 à 00:29:30    

Je sais, ça a presque aucun intêret, c'était juste pour savoir, car j'étais presque sur d'avoir lu ça quelque part?
 
Sinon, pour les fonction importées, il y a une explication ?

Reply

Marsh Posté le 20-08-2003 à 10:04:45    

L'explication logique c'est qu'elles sont utilisées ...
Y'a une routine qui se charge de formatter les arguments (argc, argv) et d'initialiser la lib standard, mais normalement c'est fait en un ou deux appels à msvcrt ça (comme le fait LCC).
Faudrait déssassembler et regarder les appels, ou choper le code de la startup routine de gcc (généralement crt0.c).


---------------
FAQ fclc++ - FAQ C++ - C++ FAQ Lite
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed