collect2: error: ld вернул 1 состояние выхода
Я хочу установить Nexalign (можно скачать здесь) на Ubuntu 13.10. Я ранее установил его на Ubuntu 10 без каких-либо проблем. Я получил ошибку:
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
Когда я меняю 5-ю строку (LD = -lpthread как LD = -l) в файле make, программа была установлена без ошибок. У меня есть базовые знания в C/C++.
Я что-то пропустил, преобразовав 5-ю строку в "LD = -l"? Или у вас есть предложения?
Я искал "спросить портал Ubuntu", чтобы найти ответ, но я не получил полезного.
Благодарю.
1 ответ
-lpthread - это опция для указания связи с библиотекой потоков posix. Если ваша компиляция работает без указания этой библиотеки, она, вероятно, уже включена по умолчанию, поэтому вы ничего не "пропустите".
В соответствии с этим ваш исходный make-файл, вероятно, неверен, поэтому вы получаете сообщение об ошибке.