web-dev-qa-db-ja.com

collect2:エラー:ldが1つの終了ステータスを返しました

Nexalignをインストールしたい(ubuntu 13.10で here からダウンロードできます)以前に問題なく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

Makeファイルで5行目(LD = -lpthread as LD = -l)を変更すると、プログラムはエラーなしでインストールされました。 C/C++の基本的な知識があります。

5行目を「LD = -l」に変換することで何かを見逃しますか?または、何か提案はありますか?

「ubuntuポータルに質問」で検索して答えを見つけましたが、役に立つものが見つかりませんでした。

ありがとう。

5
m.i.cosacak

-lpthreadは、posixスレッドライブラリに対するリンクを指定するオプションです。そのライブラリを指定せずにコンパイルが機能する場合、おそらくデフォルトで既に含まれているので、何も「見逃さない」。

this によると、元のmakefileはおそらく正しくないため、エラーメッセージが表示されます。

0
noleti