You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用Meson作为CUDA构建系统时遇nvcc编译报错问题求助

问题描述

我有一个hello.cu源文件,代码如下:

#include <iostream>

int
main(int, char**) {
    std::cout << "hello world" << std::endl;
    return 0;
}

对应的meson.build配置:

project('hello', 'cuda')
executable('hello', 'hello.cu')

执行meson setup时出现错误:

meson.build:1:0: ERROR: Compiler nvcc cannot compile programs.

手动执行以下命令可成功编译:

nvcc -o hello -ccbin /usr/bin/g++-13 hello.cu

由于CUDA 12不支持gcc 14.1,我尝试设置环境变量CXX=/usr/bin/g++-13后执行CXX=/usr/bin/g++-13 meson setup build,但仍出现相同错误。

解决方案

问题核心是Meson默认未将指定的C++编译器传递给nvcc作为宿主编译器,需显式配置nvcc使用兼容的gcc 13。以下是三种可行方法:

方法1:在meson.build中指定nvcc的ccbin参数

修改meson.build,给nvcc添加-ccbin参数:

project('hello', 'cuda')
executable(
    'hello',
    'hello.cu',
    cuda_args : ['-ccbin=/usr/bin/g++-13']
)

方法2:通过环境变量指定CUDA宿主编译器

执行meson setup时直接设置CUDA_HOST_COMPILER环境变量:

CUDA_HOST_COMPILER=/usr/bin/g++-13 meson setup build

方法3:在project声明中指定兼容的C++编译器

在project配置中明确指定C++编译器版本,确保Meson配合nvcc使用gcc 13:

project('hello', ['cuda', 'cpp'], default_options : ['cpp_compiler=g++-13'])
executable('hello', 'hello.cu')

以上任一方法都能让nvcc使用兼容的gcc 13完成编译,解决CUDA 12与gcc 14.1的兼容性问题。

内容的提问来源于stack exchange,提问作者Pedro Henrique Dalla Pacce

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.21 14:02:11