我想安装 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
当我将 make 文件中的第 5 行 (LD = -lpthread 改为 LD = -l) 更改后,程序安装成功,没有任何错误。我具有 C/C++ 基础知识。
将第 5 行转换为“LD = -l”会遗漏任何内容吗?或者您有什么建议?
我搜索了“询问 ubuntu 门户”来寻找答案,但没有得到有用的答案。
谢谢。
答案1
-lpthread 是指定链接到 posix 线程库的选项。如果您的编译在未指定该库的情况下工作,则它可能已默认包含在内,因此您不会“错过”任何东西。
根据这,您原来的 makefile 可能不正确,这就是您收到错误消息的原因。