使用 distcc 编译不会分发到其他系统/从站不起作用



我遇到了一个编译作业分发工具discc的问题,其中(cmake(构建未分发到其他指定系统(如~/.distcc/host中所定义(。

我这样配置构建系统:

cmake -DCMAKE_C_COMPILER_LAUNCHER=distcc -DCMAKE_CXX_COMPILER_LAUNCHER=distcc [...]

对于其他(类似的(构建,distcc运行良好,因此配置正确。

可能是什么问题?

事实证明distcc拒绝使用march=native编译选项。这当然是有道理的,因为可以组合具有混合优化标志的二进制文件。

只是为了让您知道,如果您有一个使用march=native的构建系统,如cmake指令:

include(CheckCXXCompilerFlag)
CHECK_CXX_COMPILER_FLAG("-march=native" COMPILER_SUPPORTS_MARCH_NATIVE)
if(COMPILER_SUPPORTS_MARCH_NATIVE)
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -march=native")
endif()

您必须禁用它,才能将distcc与从属设备一起使用。您必须手动指定体系结构标志。

或者,尝试检测distcc:的使用

include(CheckCXXCompilerFlag)
STRING(FIND "${CMAKE_CXX_COMPILER_LAUNCHER}" "distcc" found)
if (${found} LESS 0)
message(STATUS "trying to use -march=native")
CHECK_CXX_COMPILER_FLAG("-march=native" COMPILER_SUPPORTS_MARCH_NATIVE)
if(COMPILER_SUPPORTS_MARCH_NATIVE)
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -march=native")
endif()
else()
message(STATUS "detected 'distcc' build, hence not using -march=native")
endif()

要想成功,请确保将distcc与相应的cmake编译器启动工具一起使用:

cmake -DCMAKE_C_COMPILER_LAUNCHER=distcc -DCMAKE_CXX_COMPILER_LAUNCHER=distcc [...]

相关内容

  • 没有找到相关文章

最新更新