aarch64-linux-gnu/libGL.so: undefined reference to drmGetDevices2问题解决

最近在Nvidia的PX2板子上安装Autoware,按照Autoware.ai的source build步骤进行环境配置、下载代码并进行编译。编译过程中遇到了下面的问题:

--- stderr: kitti_player                                                                                                                                                     
/usr/lib/gcc/aarch64-linux-gnu/5/../../../aarch64-linux-gnu/libGL.so: undefined reference to `drmCloseOnce'
/usr/lib/gcc/aarch64-linux-gnu/5/../../../aarch64-linux-gnu/libGL.so: undefined reference to `drmMap'
/usr/lib/gcc/aarch64-linux-gnu/5/../../../aarch64-linux-gnu/libGL.so: undefined reference to `drmUnmap'
/usr/lib/gcc/aarch64-linux-gnu/5/../../../aarch64-linux-gnu/libGL.so: undefined reference to `drmGetDevices2'
/usr/lib/gcc/aarch64-linux-gnu/5/../../../aarch64-linux-gnu/libGL.so: undefined reference to `drmFreeDevice'
/usr/lib/gcc/aarch64-linux-gnu/5/../../../aarch64-linux-gnu/libGL.so: undefined reference to `drmGetDeviceNameFromFd2'
/usr/lib/gcc/aarch64-linux-gnu/5/../../../aarch64-linux-gnu/libGL.so: undefined reference to `drmOpenOnce'
/usr/lib/gcc/aarch64-linux-gnu/5/../../../aarch64-linux-gnu/libGL.so: undefined reference to `drmGetDevice2'
/usr/lib/gcc/aarch64-linux-gnu/5/../../../aarch64-linux-gnu/libGL.so: undefined reference to `drmFreeDevices'
collect2: error: ld returned 1 exit status
make[2]: *** [devel/lib/kitti_player/kitti_player] Error 1
make[1]: *** [CMakeFiles/kitti_player.dir/all] Error 2
make: *** [all] Error 2

网上搜了一圈,别人也遇到了,但是解决办法是把这里提到的libGL.so换成对/usr/lib/gcc/aarch64-linux-gnu/Tegra/libGL.so文件的软链接。可是我的环境中看了下/usr/lib/gcc/aarch64-linux-gnu/下并没有Tegra,所以不能直接这么操作。肯定是少装东西了。

 

后来在Nvidia开发者论坛中找到了解决办法,No /usr/lib/aarch64-linux-gnu/tegra/libGL.so.0 with Jetpack 4.4.1正是此问题。

解决方法如下:

1.从github中https://github.com/NVIDIA/libglvnd路径下载libglvnd。

按照其中的readme进行编译,最后执行sudo make install进行安装。

2.对出错的库文件进行更新(软连接指向新安装的库文件)

安装后,会在/usr/local/lib/下出现libGL.so库文件,此时进入/usr/lib/gcc/aarch64-linux-gnu/目录,执行一下操作:

sudo rm libGL.so

sudo ln -s /usr/local/lib/libGL.so libGL.so 

这样,相当于重新安装了对应的库,并把/usr/lib/gcc/aarch64-linux-gnu/下的libGL.so通过软连接指向新安装的库文件。


 

另外,在编译过程中碰到的另一个问题报错如下:

c++: internal compiler error: Killed (program cc1plus)

经过排查是板子内存空间不够导致的。由此,可以看出Autoware编译过程中还是很耗费内存的。

删除了一些文件腾出空间后继续编译,编译ok了。

 

这两个问题耽误了我大半天,所以在此记录一下。

 

你可能感兴趣的:(编译相关)