JetPack6에서 Opencv 빌드하기
2025. 1. 4. 12:49ㆍMemorizing/Jetson
이전에 사용하던 JetPack5.1.1에서는 opencv 4.5.4를 이용해서 빌드했었는데, 똑같이 4.5.4 버전으로 빌드하려고하니 에러가 발생했다. 아마 CUDA 버전과 호환성이 안 맞는 문제가 발생한 것 같다.
[1/1594] Building NVCC (Device) object...da_compile_1_generated_gpu_mat_nd.cu.o
FAILED: modules/core/CMakeFiles/cuda_compile_1.dir/src/cuda/cuda_compile_1_generated_gpu_mat_nd.cu.o /home/mingi/opencv/build/modules/core/CMakeFiles/cuda_compile_1.dir/src/cuda/cuda_compile_1_generated_gpu_mat_nd.cu.o
cd /home/mingi/opencv/build/modules/core/CMakeFiles/cuda_compile_1.dir/src/cuda && /usr/bin/cmake -E make_directory /home/mingi/opencv/build/modules/core/CMakeFiles/cuda_compile_1.dir/src/cuda/. && /usr/bin/cmake -D verbose:BOOL=OFF -D build_configuration:STRING=RELEASE -D generated_file:STRING=/home/mingi/opencv/build/modules/core/CMakeFiles/cuda_compile_1.dir/src/cuda/./cuda_compile_1_generated_gpu_mat_nd.cu.o -D generated_cubin_file:STRING=/home/mingi/opencv/build/modules/core/CMakeFiles/cuda_compile_1.dir/src/cuda/./cuda_compile_1_generated_gpu_mat_nd.cu.o.cubin.txt -P /home/mingi/opencv/build/modules/core/CMakeFiles/cuda_compile_1.dir/src/cuda/cuda_compile_1_generated_gpu_mat_nd.cu.o.RELEASE.cmake
/home/mingi/opencv_contrib/modules/cudev/include/opencv2/cudev/ptr2d/texture.hpp(61): error: texture is not a template
typedef texture<T, 0x02, cudaReadModeElementType> TexRef;
^
/home/mingi/opencv_contrib/modules/cudev/include/opencv2/cudev/ptr2d/texture.hpp(83): error: identifier "cudaUnbindTextureObject" is undefined
cudaUnbindTextureObject(ref);
^
2 errors detected in the compilation of "/home/mingi/opencv/modules/core/src/cuda/gpu_mat_nd.cu".
CMake Error at cuda_compile_1_generated_gpu_mat_nd.cu.o.RELEASE.cmake:282 (message):
Error generating file
/home/mingi/opencv/build/modules/core/CMakeFiles/cuda_compile_1.dir/src/cuda/./cuda_compile_1_generated_gpu_mat_nd.cu.o
[2/1594] Building NVCC (Device) object.../cuda_compile_1_generated_gpu_mat.cu.o
FAILED: modules/core/CMakeFiles/cuda_compile_1.dir/src/cuda/cuda_compile_1_generated_gpu_mat.cu.o /home/mingi/opencv/build/modules/core/CMakeFiles/cuda_compile_1.dir/src/cuda/cuda_compile_1_generated_gpu_mat.cu.o
cd /home/mingi/opencv/build/modules/core/CMakeFiles/cuda_compile_1.dir/src/cuda && /usr/bin/cmake -E make_directory /home/mingi/opencv/build/modules/core/CMakeFiles/cuda_compile_1.dir/src/cuda/. && /usr/bin/cmake -D verbose:BOOL=OFF -D build_configuration:STRING=RELEASE -D generated_file:STRING=/home/mingi/opencv/build/modules/core/CMakeFiles/cuda_compile_1.dir/src/cuda/./cuda_compile_1_generated_gpu_mat.cu.o -D generated_cubin_file:STRING=/home/mingi/opencv/build/modules/core/CMakeFiles/cuda_compile_1.dir/src/cuda/./cuda_compile_1_generated_gpu_mat.cu.o.cubin.txt -P /home/mingi/opencv/build/modules/core/CMakeFiles/cuda_compile_1.dir/src/cuda/cuda_compile_1_generated_gpu_mat.cu.o.RELEASE.cmake
/home/mingi/opencv_contrib/modules/cudev/include/opencv2/cudev/ptr2d/texture.hpp(61): error: texture is not a template
typedef texture<T, 0x02, cudaReadModeElementType> TexRef;
^
/home/mingi/opencv_contrib/modules/cudev/include/opencv2/cudev/ptr2d/texture.hpp(83): error: identifier "cudaUnbindTextureObject" is undefined
cudaUnbindTextureObject(ref);
^
/home/mingi/opencv/modules/core/include/opencv2/core/cuda/common.hpp(99): error: identifier "textureReference" is undefined
template<class T> inline void bindTexture(const textureReference* tex, const PtrStepSz<T>& img)
^
3 errors detected in the compilation of "/home/mingi/opencv/modules/core/src/cuda/gpu_mat.cu".
CMake Error at cuda_compile_1_generated_gpu_mat.cu.o.RELEASE.cmake:282 (message):
Error generating file
/home/mingi/opencv/build/modules/core/CMakeFiles/cuda_compile_1.dir/src/cuda/./cuda_compile_1_generated_gpu_mat.cu.o
위의 에러 로그에서 에러가 발생하는 파일들을 찾아가서 수정해보았는데도 안되어서 그냥 깔끔하게 가장 최신 버전의 opencv를 클론 한 후, 다음과 같이 빌드하고 설치했다. cmake는 오래걸려서 상대적으로 가벼운 ninja를 통해서 빌드를 진행.
빌드할 때, opencv, opencv_contrib를 모두 클론하고 사용해야한다.
git clone --depth=1 https://github.com/opencv/opencv.git
git clone --depth=1 https://github.com/opencv/opencv_contrib.git
cd opencv
mkdir build
cd build
# 빌드 환경 구성
CC=gcc-11 CXX=g++-11 cmake -D CMAKE_BUILD_TYPE=RELEASE
-D CMAKE_INSTALL_PREFIX=/usr
-D OPENCV_EXTRA_MODULES_PATH=~/workspace/opencv_contrib/modules
-D EIGEN_INCLUDE_PATH=/usr/include/eigen3
-D WITH_OPENCL=OFF -D CUDA_ARCH_BIN=8.7
-D CUDA_ARCH_PTX="sm_87"
-D WITH_CUDA=ON -D WITH_CUDNN=ON
-D WITH_CUBLAS=ON -D ENABLE_FAST_MATH=ON
-D CUDA_FAST_MATH=ON -D OPENCV_DNN_CUDA=ON
-D ENABLE_NEON=ON -D WITH_OPENMP=ON
-D BUILD_TIFF=ON -D WITH_FFMPEG=ON
-D WITH_GSTREAMER=ON -D WITH_TBB=ON
-D BUILD_TBB=ON -D BUILD_TESTS=OFF
-D WITH_EIGEN=ON -D WITH_V4L=ON
-D WITH_LIBV4L=ON
-D OPENCV_ENABLE_NONFREE=ON
-D INSTALL_C_EXAMPLES=OFF
-D INSTALL_PYTHON_EXAMPLES=OFF
-D PYTHON3_PACKAGES_PATH=/usr/lib/python3/dist-packages
-D OPENCV_GENERATE_PKGCONFIG=ON
-D BUILD_EXAMPLES=OFF
-G Ninja ..
# 빌드
sudo ninja -j4
# 설치
sudo ninja install
# 라이브러리 링크 캐시 업데이트
sudo ldconfig
# 캐시 등 정리
ninja clean
sudo apt-get update
더보기
// 아래는 x86-64 archtecture
CC=gcc-9 CXX=g++-9 cmake -D CMAKE_BUILD_TYPE=RELEASE -D CMAKE_INSTALL_PREFIX=/usr/local -D CPU_BASELINE=SSE4_2 -D CPU_DISPATCH=AVX2 -D OPENCV_EXTRA_MODULES_PATH=~/workspace/opencv_contrib/modules -D EIGEN_INCLUDE_PATH=/usr/include/eigen3 -D WITH_OPENCL=OFF -D CUDA_ARCH_BIN=8.7 -D CUDA_ARCH_PTX="sm_87" -D WITH_CUDA=ON -D WITH_CUDNN=ON -D WITH_CUBLAS=ON -D ENABLE_FAST_MATH=ON -D CUDA_FAST_MATH=ON -D OPENCV_DNN_CUDA=ON -D WITH_OPENMP=ON -D BUILD_TIFF=ON -D WITH_FFMPEG=ON -D WITH_GSTREAMER=ON -D WITH_TBB=ON -D BUILD_TBB=ON -D BUILD_TESTS=OFF -D WITH_EIGEN=ON -D WITH_V4L=ON -D WITH_LIBV4L=ON -D OPENCV_ENABLE_NONFREE=ON -D INSTALL_C_EXAMPLES=OFF -D INSTALL_PYTHON_EXAMPLES=OFF -D PYTHON3_PACKAGES_PATH=/usr/lib/python3/dist-packages -D OPENCV_GENERATE_PKGCONFIG=ON -D BUILD_EXAMPLES=OFF -G Ninja ..^C
아래의 결과는 jtop의 결과
'Memorizing > Jetson' 카테고리의 다른 글
IRuntime::deserializeCudaEngine: Error Code 1: Serialization (0) | 2025.01.06 |
---|---|
JetPack6에서 Deepsort 사용하기 (1) | 2025.01.04 |
JetPack 5.1.1 에서 Jetpack 6 설치하기 (0) | 2025.01.03 |
error: stat(/usr/local/cuda/lib64/libcudart_static.a): Bad message (0) | 2025.01.03 |
Jetson Orin Nano에 ONNXRUNTIME 환경 설정하기 (1) | 2024.12.21 |