我在Ubuntu18.04系统下安装gdal3.1.2,虽然按照网上的教程能够编译成功,但是在ros下使用catkin_make的时候一直报告如下错误:
libgdal.so: undefined reference to 'curl_easy_getinfo@CURL_OPENSSL_4'
libgdal.so: undefined reference to 'curl_multi_perform@CURL_OPENSSL_4'
libgdal.so: undefined reference to 'curl_multi_cleanup@CURL_OPENSSL_4'
libgdal.so: undefined reference to 'curl_mime_init@CURL_OPENSSL_4'
libgdal.so: undefined reference to 'curl_multi_remove_handle@CURL_OPENSSL_4'
libgdal.so: undefined reference to 'curl_mime_addpart@CURL_OPENSSL_4'
libgdal.so: undefined reference to 'curl_mime_name@CURL_OPENSSL_4'
libgdal.so: undefined reference to 'curl_multi_info_read@CURL_OPENSSL_4'
libgdal.so: undefined reference to 'curl_easy_setopt@CURL_OPENSSL_4'
libgdal.so: undefined reference to 'curl_mime_filedata@CURL_OPENSSL_4'
libgdal.so: undefined reference to 'curl_mime_free@CURL_OPENSSL_4'
libgdal.so: undefined reference to 'curl_easy_cleanup@CURL_OPENSSL_4'
libgdal.so: undefined reference to 'curl_easy_perform@CURL_OPENSSL_4'
libgdal.so: undefined reference to 'curl_easy_init@CURL_OPENSSL_4'
libgdal.so: undefined reference to 'curl_multi_add_handle@CURL_OPENSSL_4'
libgdal.so: undefined reference to 'curl_slist_free_all@CURL_OPENSSL_4'
libgdal.so: undefined reference to 'curl_slist_append@CURL_OPENSSL_4'
libgdal.so: undefined reference to 'curl_version@CURL_OPENSSL_4'
libgdal.so: undefined reference to 'curl_multi_setopt@CURL_OPENSSL_4'
libgdal.so: undefined reference to 'curl_mime_data@CURL_OPENSSL_4'
libgdal.so: undefined reference to 'curl_multi_init@CURL_OPENSSL_4'
libgdal.so: undefined reference to 'curl_multi_wait@CURL_OPENSSL_4'
查了大量的资料,试过
sudo apt install libcurl4-openssl-dev
sudo apt install -y libcurl4 curl
但是发现并不行,还是没有解决问题,包括卸了libcurl4-dev,最后把ros都卸载了还是不能解决问题!最后就把目光集中在了gdal身上,使用如下命令查看libdal.so位置
ldconfig -p | grep libgdal
然后使用以下命令查看libgdal.so对与curl依赖的是哪个.so文件
ldd /usr/local/lib/libgdal.so | grep curl
输出如下:
libcurl.so.4 => /usr/lib/x86_64-linux-gnu/libcurl.so.4
libcurl-gnutls.so.4 => /usr/lib/x86_64-linux-gnu/libcurl-gnutls.so.4
给我的感觉就是应该是gdal的安装环境被我搞坏了,导致gdal.so的依赖出了问题,所以我果断卸载gdal,使用如下命令清除:
sudo rm -rf /usr/local/bin/gdal* /usr/local/lib/libgdal* /usr/lib/libgdal*
需要注意的是:我没有把gdal安装在build文件下,而是直接让其默认安装的。
然后删除掉我的gdal-3.1.5的文件夹,之后重新解压出一个新的gdal-3.1.5的文件夹,执行如下命令:
cd gdal-3.1.5/
./configure --with-proj=/usr/local --prefix=/usr/local --with-tiff=no --with-local=/usr/local --without-curl
make -j4
sudo make install
安装完成之后就可以正常使用了!