我有以下构建文件:
cc_binary(
name = "main",
srcs = ["main.cpp"],
copts = [
'-fpic',
'-pthread'
],
)
具有以下main.cpp:
#include <thread>
int main(int argc, char *argv[])
{
auto a = std::thread([](){});
return 0;
}
上面的cpp文件使用g++ -pthread
进行编译,但是在Bazel中编译时出现以下错误失败:
/usr/include/c++/7/thread:122: error: undefined reference to 'pthread_create'
我是否以错误的方式传递了国旗?使用Bazel进行编译时,我需要怎么做才能拥有线程?
编辑:
-pthread
和-lpthread
都不起作用
答案 0 :(得分:3)
-lpthread
必须添加到linkopts
属性中(如King Stone和dms建议的那样)
cc_binary(
name = "main",
srcs = ["main.cpp"],
copts = [
"-fpic",
],
linkopts = ["-lpthread"],
)
error: undefined reference
是链接器错误。在linkopts
属性中指定的所有命令都将移交给链接器。