web-dev-qa-db-fra.com

collect2: erreur: ld a renvoyé 1 état de sortie

Je veux installer nexalign (peut être téléchargé à partir de ici ) sur Ubuntu 13.10. Je l'ai déjà installé sur Ubuntu 10 sans aucun problème. L'erreur que j'ai eu est:

gcc   -O9 -Wall -Dthread -lpthread main.o mapping.o interface.o input.o sarray.o mem.o output.o pattern_searching.o pattern_searching_solid.o string_matching.o time.o misc.o bt.o mapping_output.o hash.o r_output.o mapping_solid.o pattern_searching_short.o sort_mapping.o cluster_mapping.o -o nexalign
mapping.o: In function `mapping':
mapping.c:(.text+0x21e): undefined reference to `pthread_create'
mapping.c:(.text+0x276): undefined reference to `pthread_join'
mapping.c:(.text+0x410): undefined reference to `pthread_create'
mapping.c:(.text+0x65e): undefined reference to `pthread_create'
mapping_solid.o: In function `mapping_solid':
mapping_solid.c:(.text+0x1f4): undefined reference to `pthread_create'
mapping_solid.c:(.text+0x23b): undefined reference to `pthread_join'
mapping_solid.c:(.text+0x3dc): undefined reference to `pthread_create'
collect2: error: ld returned 1 exit status
make: *** [all] Error 1

Lorsque je modifie la 5ème ligne (LD = -lpthread sous la forme LD = -l) dans le fichier make, le programme a été installé sans erreur. J'ai des connaissances de base en C/C++.

Est-ce que je manque quelque chose en convertissant la 5ème ligne en "LD = -l"? Ou avez-vous des suggestions?

J'ai cherché "demander au portail ubuntu" pour trouver une réponse, mais je n'ai pas obtenu d'aide.

merci.

5
m.i.cosacak

-lpthread est une option permettant de spécifier une liaison avec la bibliothèque de threads posix. Si votre compilation fonctionne sans spécifier cette bibliothèque, elle est probablement déjà incluse par défaut, vous ne "ratez" donc rien.

Selon this , votre fichier Make original est probablement incorrect, c'est pourquoi vous obtenez le message d'erreur.

0
noleti