2011-01-26 3 views
1

Ainsi, après avoir passé quelques heures à configurer manuellement les autotools, j'ai finalement réussi à créer un makefile pour mon projet. Seul problème? Cela me donne des problèmes avec l'éditeur de liens. Permettez-moi de l'expliquer mieux: J'ai un projet qui est divisé en plusieurs sous-programmes, qui doivent tous être liés au programme principal, main.c. Mon problème est que pendant que je peux tout compiler correctement avec gcc, make me donne le redoutable collect2: ld a retourné 1 erreur d'état de sortie, nommant une référence indéfinie à la raison principale. Maintenant, nous savons tous que c'est une erreur de liaison, et comme une preuve de cela, je pourrais compiler tous les fichiers sans les lier en ajoutant -c parmi les CFLAGS dans Makefile.am. Mais nous le savions déjà, je suppose. Ma question est: que dois-je ajouter au fichier Makefile.am (celui dans mon dossier src, je devine?) Afin de le laisser lier tous les fichiers les uns aux autres et pas séparément, de sorte que l'éditeur de liens trouvera le point d'entrée dans main.o? Fondamentalement, l'équivalent d'exécuter "gcc program1.c program2.c main.c". Je sais que automake le fait parce qu'il construit les fichiers progressivement, un à la fois, et je sais que c'est une question stupide, mais ça me rend fou de toute façon. C'est la première fois que j'utilise autotools, aidez-moi à le faire pas le dernier!Problème avec automake et liaison

Répondre

2

Si foo est le nom de votre programme et vous ne faites rien de fantaisie,

bin_PROGRAMS = foo 
foo_SOURCES = program1.c program2.c main.c 
foo_LDADD = # any other libraries go here as -l arguments 

devrait être une Makefile.am suffisante.

+0

C'était tout, merci! – Charles

Questions connexes