文章目录

报错

在Ubuntu20下,通过源码编译CloudCompare时报错如下:

/usr/bin/ld: /usr/local/anaconda3/lib//libQt5Core.so: undefined reference to `std::__exception_ptr::exception_ptr::_M_release()@CXXABI_1.3.13'
/usr/bin/ld: /usr/local/anaconda3/lib//libQt5Gui.so: undefined reference to `std::__throw_bad_array_new_length()@GLIBCXX_3.4.29'
/usr/bin/ld: /usr/local/anaconda3/lib//libQt5Core.so: undefined reference to `std::__exception_ptr::exception_ptr::_M_addref()@CXXABI_1.3.13'
collect2: error: ld returned 1 exit status
make[2]: *** [qCC/CMakeFiles/CloudCompare.dir/build.make:1850: qCC/CloudCompare] Error 1
make[1]: *** [CMakeFiles/Makefile2:2568: qCC/CMakeFiles/CloudCompare.dir/all] Error 2
make: *** [Makefile:130: all] Error 2

这里anaconda下的QT库是基于python的,不可能去引用C++的函数,所以这是由于我的系统中包含了C++和Python二者的QT,项目优先去调用Python的了。从cmake .. 生成的 build/CMakeCache.txt 文件中,也可以看到路径不对:

在这里插入图片描述
将上图中的路径全部改为C++的QT路径之后,可以make成功,但下次cmake ..时肯定又变回去了。

解决方法

一劳永逸的方法就是在环境变量中添加C++版QT的路径,在~/.bashrc添加如下,具体版本路径根据自己的QT安装路径填写:

# >>> QT >>>
export QTDIR=/opt/Qt/5.15.2
export PATH=$QTDIR/gcc_64/bin:$PATH
export LD_LIBRARY_PATH=$QTDIR/gcc_64/lib
# <<< QT <<<

环境变量生效后,cmake ..可以找到正确的路径了,见build/CMakeCache.txt :
在这里插入图片描述

更多推荐