我在ubuntu上使用linux。但是,即使使用pthread和lpthread,我也遇到了问题。请帮忙!提前谢谢!
yuki@ubuntu:~/NetBeansProjects/csci212A3$ g++ Path.o Maze.o SubmitMazeSoln.o TestSubmitMazeSoln.cpp -o -lpthread
In file included from Maze.h:12:0,
from TestSubmitMazeSoln.cpp:11:
Assignm3_Utils.h: In constructor ‘Point::Point()’:
Assignm3_Utils.h:17:19: warning: converting to non-pointer type ‘int’ from NULL [-Wconversion-null]
Point () { x = NULL; y = NULL; }
^
Assignm3_Utils.h:17:29: warning: converting to non-pointer type ‘int’ from NULL [-Wconversion-null]
Point () { x = NULL; y = NULL; }
^
/tmp/ccMQbyoO.o: In function `newThread()':
TestSubmitMazeSoln.cpp:(.text+0x3ab2): undefined reference to `pthread_create'
TestSubmitMazeSoln.cpp:(.text+0x3b0a): undefined reference to `pthread_create'
TestSubmitMazeSoln.cpp:(.text+0x3b53): undefined reference to `pthread_join'
TestSubmitMazeSoln.cpp:(.text+0x3b79): undefined reference to `pthread_join'
collect2: error: ld returned 1 exit status
答案 0 :(得分:1)
这是否是命令行的准确副本:
g++ Path.o Maze.o SubmitMazeSoln.o TestSubmitMazeSoln.cpp -o -lpthread
-o
选项指定输出文件,并期望参数。如上所述,这个论点是-lpthread
。所以-lpthread
不是一个参数(并且不会搜索pthread库);它是输出文件的名称。 (而且你真的不想要一个名为-lpthread
的可执行文件或任何文件;以-
开头的文件名导致Unix下无问题。
关于警告:我猜他们x
y
和Point
的{{1}}类型int
。 NULL
是指定空指针的常规方法,并且将其用作int
是第一度中的模糊处理。所以g ++警告说。 (当然,从C ++ 11开始,人们应该更喜欢nullptr
作为空指针,而不是NULL
。)