本機Ubuntu14.04 已經安裝了Qt5.11
使用如下命令clone vnote的源碼
git clone [email protected]:tamlok/vnote.git --recursive // vnote使用了git submodule,使用--recursive選項clone所有submodule
cd vnote
qmake // 生成Makefile文件
make
出現瞭如下錯誤:
這個錯誤的原因很明顯,就是沒有找到有這個函數定義的so文件,看起來都是和dbus相關
使用下面這個命令查詢報錯的libQt5WebEngineCore.so在加載時需要哪些so文件
objdump -p /home/ts/software/5.11.2/gcc_64/lib/libQt5WebEngineCore.so
顯示的部分截圖:
看起來是需要libdbus-1.so.3
搜索自己的電腦系統中是否有這個文件,結果發現在
/usr/lib/x86_64-linux-gnu
這個路徑下有相關的libdbus文件(都是一些軟連接,追蹤軟連接的目標,確實有是個libdbus-1.so.3)
nm libdbus-1.so // 由於這個文件是軟連接,等同於nm libdbus-1.so.3
結果很出乎意料
這個文件內容異常,沒有導出的符號。
下載dbus源碼,解壓後進入目錄dbus-1.10.20
./autogen.sh
./configure // 配置dbus的安裝路徑爲默認的
默認的路徑爲
發現默認路徑都是在/usr/local下面,和上面查詢到的本機的那些有問題的dbus文件不在同一路徑下,也就沒有相互影響的可能了,可以安全的執行make install
make
make install // 也可以執行make uninstall 刪除掉/usr/local路徑下安裝的dbus相關文件
回到vnote的目錄
make
沒有任何錯誤了
cd src // 在沒有make install 之前,VNote可執行程序是生成在此目錄下的
./VNote
成功運行VNote
總結:
- nm和objdump工具是觀察so文件的利器,值得記住並使用
- VNote是國產軟件中值得驕傲的存在,點贊
謝謝觀賞:)