Clang, éditeur de liens Microsoft et bibliothèque standard

J’ai réussi à construire Clang avec Microsoft C ++ et j’essaie de le comstackr pour un cas de test hello world; cela va aussi loin que de générer un fichier object, la liaison avec la bibliothèque standard étant le dernier point d’achoppement:

hello-202520.o : error LNK2019: unresolved external symbol _printf referenced in function _main LINK : error LNK2001: unresolved external symbol _mainCRTStartup 

Des commentaires des années précédentes disent que Clang ne fait pas encore de liens Windows, mais j’ai l’impression qu’ils sont périmés. En fait, il semble maintenant être capable de générer des fichiers object au format Windows:

 clang -c hello.c ren hello.o hello.obj link hello.obj 

… ne marque pas, donc le format du fichier semble être correct, mais obtient toujours les erreurs de symbole externe non résolues. On peut supposer que le compilateur Microsoft balise ses fichiers d’objects en sortie avec une indication de la bibliothèque standard à laquelle ils doivent être liés alors que Clang ne le fait pas; ligne de commande de l’éditeur de liens à utiliser:

 link /defaultlib:libcmt /defaultlib:oldnames hello.obj 

J’avais de grands espoirs à ce stade, mais hélas, cela donne toujours les mêmes erreurs de symbole externes non résolues.

Qu’est-ce qui me manque encore?

Il s’avère que Clang générait par défaut un code 32 bits, mais j’utilisais un MSC 64 bits et les symboles _ sur C ont été supprimés avec le déplacement vers x64. La spécification -m64 a donc été utilisée.