报错
_Simulations/nbody :
/usr/include/c++/7/bits/move.h(48):
error: identifier "__builtin_addressof" is undefined #4
/usr/local/cuda/samples/5_Simulations/nbody $ sudo make
/usr/local/cuda-9.0/bin/nvcc -ccbin g++ -I../../common/inc -m64 -ftz=true -gencode arch=compute_30,code=sm_30 -gencode arch=compute_35,code=sm_35 -gencode arch=compute_37,code=sm_37 -gencode arch=compute_50,code=sm_50 -gencode arch=compute_52,code=sm_52 -gencode arch=compute_60,code=sm_60 -gencode arch=compute_70,code=sm_70 -gencode arch=compute_70,code=compute_70 -o bodysystemcuda.o -c bodysystemcuda.cu
/usr/include/c++/7/bits/move.h(48): error: identifier "__builtin_addressof" is undefined
detected during:
instantiation of "_Tp *std::__addressof(_Tp &) [with _Tp=std::__make_not_void<char>]"
(138): here
instantiation of "_Tp *std::addressof(_Tp &) [with _Tp=std::__make_not_void<char>]"
/usr/include/c++/7/bits/ptr_traits.h(142): here
解决方式
solved:
$sudo gedit /usr/include/c++/7/bits/move.h
修改:
namespace std _GLIBCXX_VISIBILITY(default)
{
_GLIBCXX_BEGIN_NAMESPACE_VERSION
// Used, in C++03 mode too, by allocators, etc.
/**
* @brief Same as C++11 std::addressof
* @ingroup utilities
*/
#ifndef __CUDACC__
template<typename _Tp>
inline _GLIBCXX_CONSTEXPR _Tp*
__addressof(_Tp& __r) _GLIBCXX_NOEXCEPT
{ return __builtin_addressof(__r); }
#else
template<typename _Tp>
inline _GLIBCXX_CONSTEXPR _Tp*
__addressof(_Tp& __r) _GLIBCXX_NOEXCEPT
{ return reinterpret_cast<_Tp*>(&const_cast<char&>(reinterpret_cast<const volatile char&>(__r))); }
#endif
_GLIBCXX_END_NAMESPACE_VERSION
} // namespace