c++ - 使用 distcc 编译不会分发到其他系统/从站不工作
问题描述
我遇到了一个关于 discc 的问题,它是一个编译作业分发工具,其中 ( cmake
) 构建没有分发到其他指定的系统(如 中所定义~/.distcc/host
)。
我像这样配置了构建系统:
cmake -DCMAKE_C_COMPILER_LAUNCHER=distcc -DCMAKE_CXX_COMPILER_LAUNCHER=distcc [...]
对于其他(类似)构建,结果证明它distcc
工作得很好,因此配置正确。
可能是什么问题?
解决方案
事实证明,distcc
拒绝使用march=native
compile 选项。这当然是有道理的,因为可以组合具有混合优化标志的二进制文件。
只是为了让您知道,如果您有使用 的构建系统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 [...]
推荐阅读
- c# - 如何使用声纳扫描仪扫描 C# 项目
- node.js - Button Component中的MUI奇怪代码,希望有人能解释一下
- f# - 4.5 版中的阴影
- python - 关于通过 ssh 将 opencv 库安装到树莓派 4 的问题
- php - CakePHP:Bin 蛋糕烘焙表不存在
- reactjs - 如何使用 gatsby 插件将 CSS 更改为 SASS?
- pdf - 如何使用 Apps 脚本访问 Google Drive 上受密码保护的 PDF 文件
- asp.net - 如何将 DataTables 脚本与已填充的表一起使用
- java - 方法“session.createSQLQuery()”是否存在内存泄漏?如何解决?
- angular - 从服务器获取数据不会触发子组件中的更改检测