本机Ubuntu14.04 已经安装了Qt5.11
使用如下命令clone vnote的源码
git clone git@github.com: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是国产软件中值得骄傲的存在,点赞
谢谢观赏:)