2010-11-30 7 views
3

Je ne peux jamais me souvenir de quoi taper lors de la liaison inclure des fichiers dans GCC, en fait le seul que je me souvienne est -lm pour math.h. Celui que je suis particulièrement concerné en ce moment est sys/time.h.Liaison inclure des fichiers dans GCC

This page efface certaines choses, mais je voudrais toujours une liste.

Est-ce que quelqu'un connaît une bonne liste d'options de liaison?

EDIT:

Peut-être que ma question n'a pas été claire. Je veux savoir ce que j'ai besoin de taper à la ligne de commande (comme -lm pour les mathématiques ou -lpthread pour pthread) pour les différentes bibliothèques que je pourrais avoir besoin de lier lors de la création de programmes C.

Répondre

0

Je ne suis pas sûr de comprendre votre question mais -lm n'est pas un ld option, -l est une option et -lx liens libx.a (ou .so, cela dépend). vous pourriez vouloir regarder le manuel de ld pour une liste complète d'options.
Je pense que toutes les autres bibliothèques standard autres que les mathématiques sont inclus dans libc.so (.a) (-lc)

+0

'libcrypt',' libdl', 'libpthread',' libresolv' et 'librt' contiennent tous des fonctions C/POSIX standard qui ne sont pas dans' libc' et 'libm'. Beaucoup de gens considéreraient 'libz' comme une bibliothèque système standard. – ephemient

1

La fonctionnalité fournie dans <sys/time.h> est mis en œuvre libc.so (bibliothèque C). Vous n'avez pas besoin de lier quoi que ce soit d'autre car gcc devrait automatiquement lier libc.so par lui-même. Il n'y a pas de «liaison de fichiers d'inclusion», mais plutôt de liens avec des bibliothèques contenant les symboles définis par le code.

L'indicateur -l est l'un des GCC's linker options et est utilisé pour spécifier des bibliothèques supplémentaires à lier.

modifier parce que mon gcc exécutait des optimisations sur mon code source à la compilation

En outre, les informations contenues dans ce lien est un peu obsolète - vous ne devriez pas besoin d'un lien explicite libm (qui est ce que -l m ou -lm fait) dans GCC moderne.

+0

Wow, quand est-ce arrivé? http://stackoverflow.com/questions/1033898/why-do-you-have-to-link-the-math-library-in-c/1033940#1033940 Je suis à peu près sûr que c'était exact il y a un an ... – ephemient

+0

@ephemient - 'libstdC++' toujours des liens vers 'libm.so' sur mon système (avec G ++ 4.4.5), mais je voulais dire que vous ne devriez pas avoir besoin de l'indicateur' -lm' pour l'insérer du tout avec le code C. – birryree

+0

Je me demandais juste quand cela a changé. Test avec GCC 4.2.4, 4.3.5, 4.4.3, 4.4.5 et 4.5.1, avec glibc 2.11.1 et 2.12.1, j'ai encore besoin de '-lm' pour le' gcc' ordinaire. De quel GCC moderne parlez-vous? – ephemient

Questions connexes