'noinline' was not declared

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)

                                   ------- 记录备忘。

你可能感兴趣的:(杂,cuda,c)