'noinline' was not declared

在尝试更新Caffe时遇到错误提示,指出Boost中的inline函数未在当前作用域内声明。通过调整编译参数,特别是CUDA_FLAGS_COMMON和NVCCFLAGS,成功解决了问题。本文档详细记录了遇到的问题、解决方案以及相应的配置步骤。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

CUDA 5.5, boost 1.55, 更新 caffe 时出现:
/boost_1_55_0/boost/assert.hpp:102: error: ?.oinline?.was not declared in this scope

查看/boost/assert.hpp 中 第102行是
BOOST_NOINLINE void assertion_failed_msg(CharT const * expr, char const * msg, char const * function,
所以上面的错误应该是
/boost_1_55_0/boost/assert.hpp:102: error: boost_noinline was not declared in this scope

Google后发现需要添加如下信息:
CUDA_FLAGS_COMMON=-use_fast_math -DBOOST_NOINLINE='__attribute__ ((noinline))'

于是,在 Makefile.config 文件中添加下面这行:
CUDA_FLAGS_COMMON=-use_fast_math -DBOOST_NOINLINE='__attribute__ ((noinline))'

然后在 makefile 文件中将上面定义的CUDA_FLAGS_COMMON 添加到 NVCCFLAGS :
NVCCFLAGS += -ccbin=$(CXX) -Xcompiler -fPIC $(COMMON_FLAGS)
改为
NVCCFLAGS += -ccbin=$(CXX) -Xcompiler -fPIC $(CUDA_FLAGS_COMMON) $(COMMON_FLAGS)

也可以不改Makefile.config 文件,直接在 makefile 中添加:
NVCCFLAGS += -ccbin=$(CXX) -Xcompiler -fPIC -DBOOST_NOINLINE='__attribute__ ((noinline))' $(COMMON_FLAGS)

                                   ------- 记录备忘。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值