Я пытаюсь скомпилировать свою программу с помощью nvcc и g++-5 и получаю эту ошибку.
In file included from /usr/include/glm/detail/func_common.hpp:426:0,
from /usr/include/glm/detail/func_geometric.inl:5,
from /usr/include/glm/detail/func_geometric.hpp:113,
from /usr/include/glm/geometric.hpp:6,
from /usr/include/glm/detail/func_matrix.inl:4,
from /usr/include/glm/detail/func_matrix.hpp:149,
from /usr/include/glm/detail/type_mat2x2.inl:4,
from /usr/include/glm/detail/type_mat2x2.hpp:182,
from /usr/include/glm/mat2x2.hpp:6,
from /usr/include/glm/glm.hpp:71,
from src/controls.cpp:6:
/usr/include/glm/detail/func_common.inl:623:14: error: ‘std::isnan’ has not been declared
using std::isnan;
^
/usr/include/glm/detail/func_common.inl:659:14: error: ‘std::isinf’ has not been declared
using std::isinf;
При использовании g++ он компилируется правильно, но для nvcc требуется g++-5. Кто-нибудь знает, как это решить? Кстати, это начало происходить после того, как я запустил sudo do-release-upgrade
на Ubuntu.
nvcc --version
вывод таков:
nvcc: NVIDIA (R) Cuda compiler driver
Copyright (c) 2005-2016 NVIDIA Corporation
Built on Tue_Jancmake_minimum_required(VERSION 3.7 FATAL_ERROR)
set(CMAKE_C_COMPILER /usr/bin/gcc-5 CACHE PATH "" FORCE)
set(CMAKE_CXX_COMPILER /usr/bin/gcc-5 CACHE PATH "" FORCE)
project(cpu_pcd C CXX CUDA)
add_compile_options(-std=c++11)
file(GLOB SRC src/*.cpp src/*.hpp)
set(EXECUTABLE_OUTPUT_PATH ${PROJECT_BINARY_DIR}/bin)
find_package(OpenGL REQUIRED)
find_package(glfw3 REQUIRED)
find_package(GLEW REQUIRED)
find_package(CUDA REQUIRED)
include_directories(src/)
include_directories(${OPENGL_INCLUDE_DIRS})
include_directories(${GLFW_INCLUDE_DIRS})
include_directories(${CUDA_INCLUDE_DIRS})
cuda_add_library(kernel src/update_particles.cu)
cuda_add_executable(cpu_pcd ${SRC})
set_target_properties(cpu_pcd
PROPERTIES CUDA_SEPARABLE_COMPILATION on)
target_link_libraries(cpu_pcd kernel)
target_link_libraries(cpu_pcd ${OPENGL_LIBRARIES} glfw ${GLEW_LIBRARIES} ${CUDA_LIBRARIES} pthread)
13:22:03_CST_2017
Cuda compilation tools, release 8.0, V8.0.61
g++-5 --version
вывод таков:
g++-5 (Ubuntu 5.5.0-1ubuntu1) 5.4.1 20171010
Copyright (C) 2015 Free Software Foundation, Inc.
This is free software; see the source for copying conditions. There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
g++ --version
вывод такой:
g++ (Ubuntu 7.2.0-8ubuntu3) 7.2.0
Copyright (C) 2017 Free Software Foundation, Inc.
This is free software; see the source for copying conditions. There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
Я компилирую с С++ 11, и cmath не включен в мои исходные файлы. Это мой CMakeLists.txt
.
cmake_minimum_required(VERSION 3.7 FATAL_ERROR)
set(CMAKE_C_COMPILER /usr/bin/gcc-5 CACHE PATH "" FORCE)
set(CMAKE_CXX_COMPILER /usr/bin/gcc-5 CACHE PATH "" FORCE)
project(cpu_pcd C CXX CUDA)
add_compile_options(-std=c++11)
file(GLOB SRC src/*.cpp src/*.hpp)
set(EXECUTABLE_OUTPUT_PATH ${PROJECT_BINARY_DIR}/bin)
find_package(OpenGL REQUIRED)
find_package(glfw3 REQUIRED)
find_package(GLEW REQUIRED)
find_package(CUDA REQUIRED)
include_directories(src/)
include_directories(${OPENGL_INCLUDE_DIRS})
include_directories(${GLFW_INCLUDE_DIRS})
include_directories(${CUDA_INCLUDE_DIRS})
cuda_add_library(kernel src/update_particles.cu)
cuda_add_executable(cpu_pcd ${SRC})
set_target_properties(cpu_pcd
PROPERTIES CUDA_SEPARABLE_COMPILATION on)
target_link_libraries(cpu_pcd kernel)
target_link_libraries(cpu_pcd ${OPENGL_LIBRARIES} glfw ${GLEW_LIBRARIES} ${CUDA_LIBRARIES} pthread)
nvcc -std=c++11 src/*.cpp -o main -lpthread -lGL -lGLEW
. 30.11.2017nvcc
, чтобы проверить, как он вызывает g++. 30.11.2017/usr/bin/g++-5 -DGLFW_DLL -I/home/dev/work/octree-cpu-pcd/src -std=c++11 -o CMakeFiles/cpu_pcd.dir/src/controls.cpp.o -c /home/dev/work/octree-cpu-pcd/src/controls.cpp
30.11.2017/usr/bin/gcc-5
и попробуйте напрямую скомпилировать простую программу сstd::isnan
. Вам нужно исправить это, и это не связано с nvcc и CUDA. 30.11.2017