【CloudComapre】Ubuntu 20.04 下从源码编译时报错 anaconda3/lib//libQt5Core.so: undefined reference to ...
·
报错
在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 :

更多推荐

所有评论(0)