Qt5和Anaconda路径冲突

(已解决)Qt5与Anaconda3中Qt路径冲突的问题

环境:Ubuntu20.04+ROS+Anaconda

安装顺序ROS->anaconda

问题:在编译Qt时遇到错误如下

[ERROR]
/usr/bin/ld: /home/xjc/anaconda3/lib/libQt5Core.so.5.15.2: undefined reference to `std::__exception_ptr::exception_ptr::_M_release()@CXXABI_1.3.13'
/usr/bin/ld: /home/xjc/anaconda3/lib/libQt5Widgets.so.5.15.2: undefined reference to `std::__throw_bad_array_new_length()@GLIBCXX_3.4.29'
/usr/bin/ld: /home/xjc/anaconda3/lib/libQt5Core.so.5.15.2: undefined reference to `std::__exception_ptr::exception_ptr::_M_addref()@CXXABI_1.3.13'
collect2: error: ld returned 1 exit status

-------------------------------------分割线--------------------------------------------
[WARNING]
runtime library [libuuid.so.1] in /usr/lib/x86_64-linux-gnu may be hidden by files in:
      /home/xjc/anaconda3/lib
    runtime library [libfreetype.so.6] in /usr/lib/x86_64-linux-gnu may be hidden by files in:
      /home/xjc/anaconda3/lib
    runtime library [libz.so.1] in /usr/lib/x86_64-linux-gnu may be hidden by files in:
      /home/xjc/anaconda3/lib
    runtime library [libpng16.so.16] in /usr/lib/x86_64-linux-gnu may be hidden by files in:
      /home/xjc/anaconda3/lib
    runtime library [libtiff.so.5] in /usr/lib/x86_64-linux-gnu may be hidden by files in:
      /home/xjc/anaconda3/lib
    runtime library [libexpat.so.1] in /usr/lib/x86_64-linux-gnu may be hidden by files in:
      /home/xjc/anaconda3/lib
    runtime library [liblz4.so.1] in /usr/lib/x86_64-linux-gnu may be hidden by files in:
      /home/xjc/anaconda3/lib

  Some of these libraries may not be found correctly.

找了一上午终于找到了原因。

原因:

在安装ROS和安装Anaconda时都会有安装qt,同时创建了两个有关于qt的cmake文件,在编译的时候选择了有一步

find_package(Qt5 REQUIRED ...)

这一步原本应该去寻找/usr/lib/x86_64-linux-gnu/cmake/Qt5/QtConfig.cmake这个文件

但由于安装了anaconda所以这一步变为了寻找/home/${username}/Anaconda3/lib/cmake/Qt5/QtConfig.cmake这个文件,导致后续编译时链接的库文件出错。所以报出以上错误。

尝试了多种方法,终于得到了解决。

解决方法1:(推荐)

限定我们要寻找的Qt5config.cmake文件的路径,也就是在CMakeLists.txt里添加

SET(CMAKE_PREFIX_PATH "/usr/lib/x86_64-linux-gnu/cmake")

重新编译即可解决问题。(如果问题没有得到解决,建议删除build文件夹下的所有内容,再次编译,即可通过)

解决方法2:(可用但较麻烦)

在~/.bashrc文件里面将有关anaconda的所有配置注释掉

gedit ~/.bashrc
# 注释以下内容
# __conda_setup="$('/home/xjc/anaconda3/bin/conda' 'shell.bash' 'hook' 2> /dev/null)"
# if [ $? -eq 0 ]; then
#     eval "$__conda_setup"
# else
#     if [ -f "/home/xjc/anaconda3/etc/profile.d/conda.sh" ]; then
#         . "/home/xjc/anaconda3/etc/profile.d/conda.sh"
#     else
#         export PATH="/home/xjc/anaconda3/bin:$PATH"
#     fi
# fi
# unset __conda_setup

重新编译即可解决问题。(如果问题没有得到解决,建议删除build文件夹下的所有内容,再次编译,即可通过)

解决方法3:(不推荐)

如果你已经遇到了这个问题,那说明你已经安装了Anaconda,这种方法有效但不推荐,如果前两种方法你已经尝试并且确实没有解决问题,可以尝试卸载anaconda并重新安装miniconda,miniconda中没有与Qt有关的库文件,所以理论上来说不会出现冲突的问题。

注:此方法仅由于在另一台设备上安装了miniconda没有遇到这个问题,本人在安装anaconda后遇到该问题并未尝试卸载重装miniconda的方法,此方法仅供参考,不推荐使用。

(找了一上午的方法,如果帮你解决了问题,点个赞呗!)

评论 9
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值