如何使用Bazel编译简单的线程应用

时间:2019-11-05 22:38:18

标签: c++ bazel

我有以下构建文件:

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都不起作用

1 个答案:

答案 0 :(得分:3)

-lpthread必须添加到linkopts属性中(如King Stone和dms建议的那样)

cc_binary(
    name = "main",
    srcs = ["main.cpp"],
    copts = [
        "-fpic",
    ],
    linkopts = ["-lpthread"],
)

error: undefined reference是链接器错误。在linkopts属性中指定的所有命令都将移交给链接器。