目录

1  下载源码并配置

2 编译安装CV-CUDA

2.1 安装相应依赖包

2.2 升级gcc到gcc-11

2.3 build

2.4 升级cmake

2.5 再次build

2.5.1 报错 /usr/include/c++/11/bits/std_function.h:435:145: error: parameter packs not expanded with ‘...’:

3 直接使用安装包

参考文献:


Jetson AGX Orin还没到货,先在之前的Jetson AGX Xavier上面做相关开发,我Jetson AGX Xavier上新刷的机,然后JetPack用的是5.1.3。下面记录下我在Jetson上的CV-CUDA的编译安装工作。

1  下载源码并配置

sudo apt install -y git git-lfs
git clone https://github.com/CVCUDA/CV-CUDA.git
cd CV-CUDA/
./init_repo.sh 

执行init_repo.sh之后报错

./init_repo.sh 
pre-commit must be fully configured.
Try 'sudo apt-get install -y pip shellcheck && sudo pip install pre-commit'.

那就先执行这两个命令,然后再配置

sudo apt-get install -y pip shellcheck
sudo pip install pre-commit

然后 vim .pre-commit-config.yaml 里面加入如下内容

repos:
  - repo: https://github.com/pre-commit/pre-commit-hooks
    rev: v3.4.0
    hooks:
      - id: trailing-whitespace
      - id: end-of-file-fixer
      - id: check-yaml

然后

pre-commit install

然后再次执行 ./init_repo.sh

2 编译安装CV-CUDA

2.1 安装相应依赖包

sudo apt install -y cmake ninja-build python3-dev libssl-dev patchelf

2.2 升级gcc到gcc-11

如果直接apt install gcc-11 g++-11会报下面的错误

sudo apt install gcc-11 g++-11
Reading package lists... Done
Building dependency tree... 0%
Building dependency tree       
Reading state information... Done
E: Unable to locate package gcc-11
E: Unable to locate package g++-11

需要添加PPA源,然后再安装

sudo add-apt-repository ppa:ubuntu-toolchain-r/test
sudo apt update
sudo apt install gcc-11 g++-11

然后更改替代项

sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-11 11
sudo update-alternatives --install /usr/bin/g++ g++ /usr/bin/g++-11 11

然后选择默认版本

sudo update-alternatives --config gcc
sudo update-alternatives --config g++

然后发现成功升级成11版本

2.3 build

mkdir build
ci/build.sh release  -DBUILD_TESTS=1 -DPYTHON_VERSIONS=3.8 -DPUBLIC_API_COMPILERS=gcc-11

发生下面的错误

ci/build.sh release  -DBUILD_TESTS=1 -DPYTHON_VERSIONS=3.8 -DPUBLIC_API_COMPILERS=gcc-11
CMake Error at CMakeLists.txt:16 (cmake_minimum_required):
  CMake 3.20.1 or higher is required.  You are running version 3.16.3


-- Configuring incomplete, errors occurred!

2.4 升级cmake

先卸载掉之前的cmake

sudo apt-get remove cmake

然后 直接下载二进制包

Download CMake

然后

chmod 777 cmake-3.30.2-linux-aarch64.sh
./cmake-3.30.2-linux-aarch64.sh  --prefix=/usr/local
vim ~/.bashrc
export PATH=/usr/local/cmake-3.30.2-linux-aarch64/bin:$PATH
source  ~/.bashrc

2.5 再次build

ci/build.sh release  -DBUILD_TESTS=1 -DPYTHON_VERSIONS=3.8 -DPUBLIC_API_COMPILERS=gcc-11

2.5.1 报错 /usr/include/c++/11/bits/std_function.h:435:145: error: parameter packs not expanded with ‘...’:

/usr/include/c++/11/bits/std_function.h:435:145: error: parameter packs not expanded with ‘...’:
  435 |         function(_Functor&& __f)
      |                                                                                                                                                 ^ 
/usr/include/c++/11/bits/std_function.h:435:145: note:         ‘_ArgTypes’
/usr/include/c++/11/bits/std_function.h:530:146: error: parameter packs not expanded with ‘...’:
  530 |         operator=(_Functor&& __f)
      |                                                                                                                                                  ^ 
/usr/include/c++/11/bits/std_function.h:530:146: note:         ‘_ArgTypes’

解决方法在

Fails on Cuda 11.6 and PyTorch 1.12 (/usr/include/c++/11/bits/std_function.h:435:145: error: parameter packs not expanded with ‘...’:) · Issue #1491 · NVIDIA/apex · GitHub

具体就是

vim /usr/include/c++/11/bits/std_function.h 

然后把436这里的和后面531行这里的注释掉。

433       template<typename _Functor,
434                typename _Constraints = _Requires<_Callable<_Functor>>>
435         function(_Functor&& __f)
436         //noexcept(_Handler<_Functor>::template _S_nothrow_init<_Functor>())
437         : _Function_base()
438         {
439           static_assert(is_copy_constructible<__decay_t<_Functor>>::value,
440               "std::function target must be copy-constructible");
441           static_assert(is_constructible<__decay_t<_Functor>, _Functor>::value,
442               "std::function target must be constructible from the "
443               "constructor argument");
444 
445           using _My_handler = _Handler<_Functor>;
446 
447           if (_My_handler::_M_not_empty_function(__f))
448             {
449               _My_handler::_M_init_functor(_M_functor,
450                                            std::forward<_Functor>(__f));
451               _M_invoker = &_My_handler::_M_invoke;
452               _M_manager = &_My_handler::_M_manager;
453             }
454         }
528       template<typename _Functor>
529         _Requires<_Callable<_Functor>, function&>
530         operator=(_Functor&& __f)
531         //noexcept(_Handler<_Functor>::template _S_nothrow_init<_Functor>())
532         {
533           function(std::forward<_Functor>(__f)).swap(*this);
534           return *this;
535         }

然后编译就不报错了,但是编译过程中我发现,这太慢了

[167/377 4 1968.540s] Building CUDA object src/cvcuda/priv/legacy/CMakeFiles/cvcuda_legacy.dir/composite.cu.o

我直接放弃源码编译的方法,直接下载安装包试试,

3 直接使用安装包

Releases · CVCUDA/CV-CUDA · GitHub

去这里下载

然后直接

sudo apt install -y ./cvcuda-lib-0.10.1_beta-cuda11-aarch64-linux.deb ./cvcuda-dev-0.10.1_beta-cuda11-aarch64-linux.deb
sudo apt install -y ./cvcuda-python3.8-0.10.1_beta-cuda11-aarch64-linux.deb

参考文献:

ubuntu安装cmake-CSDN博客

Logo

有“AI”的1024 = 2048,欢迎大家加入2048 AI社区

更多推荐