1. 程式人生 > 實用技巧 >pulseaudio 命令顯示編譯和連結的庫不一致

pulseaudio 命令顯示編譯和連結的庫不一致

需要修改pulseaudio的內容,所以下載了pulseaudio13.0的程式碼,install之後,發現
~# /usr/local/bin/pacmd --version
pacmd 13.0
使用 libpulse 13.0.0 編譯
與 libpulse 8.0.0 連結

即使用的pulseaudio13.0 編譯的,但是連線到了pulseaduio8.0的庫,而且測試本地不管是否使用apt-get install pulseaudio都會有問題

使用ldd 檢視pulseaudio的依賴庫,發現其不只依賴pulseaudio13.0的庫還依賴pulseaudio8.0的庫
在這裡插入圖片描述

而且上述問題只在使用的arch 伺服器上出現,使用x86 ubuntu 虛擬機器同樣的程式碼沒有任何問題

經過九牛二虎之力,多方排查,終於發現問題的原因:

進入/etc/ld.so.conf.d/目錄,執行ldconfig -v,檢視結果,發現/usr/local/lib(編譯出來的pulseaudio庫安裝位置)目錄在/usr/lib/aarch64-linux-gnu後面,本地虛擬機器執行ldconfig -v時,/usr/local/lib在/usr/lib/x86_64-linux-gnu前面
所以懷疑是pulseaudio編譯和install的時候查詢libpulse-common.so是按照ldconfig執行結果的順序執行的,所以才會多一個/usr/lib/aarch64-linux-gnu
修改:
cd /etc/
vim ld.so.conf

在 include /etc/ld.so.conf.d/*.conf前面新增: include /etc/ld.so.conf.d/libc.conf
然後執行 ldconfig
測試ok