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通過軟連接指向新安裝的庫文件。

 

這個問題耽誤了我大半天,所以在此記錄一下。

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章