fbreader源码(freebsd源码阅读教程_ceph源码分析)

发布时间:2025-12-10 19:28:21 浏览次数:5

freebsd源码阅读教程_ceph源码分析-

freebsd源码阅读教程_ceph源码分析

前段时间打算在龙芯派上看一个epub文件,结果发现无法用yum install安装,于是到github上下载了FBReader的源码,编译过程比较简单,下面是编译要点:

在龙芯派上面编译FBReader

2021-06-23

自从五月份开始使用龙芯派二代以来,发现可使用的软件还是比较丰富的,然而大部分要么是基础软件,要么是常用的应用软件。这两天我想安装一款epub阅读软件,结果发现找不到,于是决定自动动手编译FBReader。FBReader其实我很早就知道而且曾经在笔记本电脑和手机上都安装过,这款开源软件是跨平台的,因此移植成功的概率还是比较大的,下面是具体的过程。

1)根据github上FBReader的说明,安装如下支持包:

sudo yum install expat-devel

sudo yum install bzip2-devel

sudo yum install zlib-devel

sudo yum install liblinebreak-devel

sudo yum install fribidi-devel

sudo yum install curl-devel

sudo yum install sqlite-devel

另外龙芯派上的Loongnix系统已经有Qt5的开发包和运行库

附注:若在Deepin系统编译需在FBReader源码包中的makefiles文件夹中的文件config.mk增加头文件搜索路径:

CFLAGS += -I/usr/include/glib-2.0

CFLAGS += -I/usr/lib/x86_64-linux-gnu/glib-2.0/include

CFLAGS += -I/usr/include/x86_64-linux-gnu/qt5

2)在FBReader源码包中的makefiles文件夹中创建文件target.mk,内容为

TARGET_ARCH = desktop

UI_TYPE = qt4

TARGET_STATUS = release

说明:

a)这里TARGET_ARCH选择desktop,因为这是在PC上安装。

b)UI_TYPE选择qt4,因为龙芯派上有qt5开发套件,FBReader的源码只需要稍加修改即可使用,如果选gtk就会比较麻烦。

c)另外以上变量只能选择源码提供的选项。

3)修改makefiles/arch文件夹中的desktop.mk文件:

修改前: INSTALLDIR=/usr

修改后: INSTALLDIR=/Studio/Software/FBReader

修改前:CFLAGS = -pipe -fno-exceptions -Wall -Wno-ctor-dtor-privacy -W -DLIBICONV_PLUG

修改后:CFLAGS = -pipe -fno-exceptions -Wall -Wno-ctor-dtor-privacy -W -DLIBICONV_PLUG -std=c++11

修改前:

ifeq “$(UI_TYPE)” “qt”

MOC = moc-qt3

QTINCLUDE = -I /usr/include/qt3

else

MOC = moc-qt4

QTINCLUDE = -I /usr/include/qt4

endif

修改后:

ifeq “$(UI_TYPE)” “qt4”

MOC = moc-qt5(注:Deepin下为moc)

QTINCLUDE = -I /usr/include/qt5

else

MOC = moc-qt5(注:Deepin下为moc)

QTINCLUDE = -I /usr/include/qt5

endif

修改前:

ifeq “$(UI_TYPE)” “qt”

UILIBS = -lqt-mt

endif

ifeq “$(UI_TYPE)” “qt4”

UILIBS = -lQtGui

endif

修改后:

ifeq “$(UI_TYPE)” “qt4”

UILIBS = -lQt5Gui -lQt5Core -lQt5Widgets

endif

ifeq “$(UI_TYPE)” “qt5”

UILIBS = -lQt5Gui -lQt5Core -lQt5Widgets

endif

说明:

1)这里由于Qt5的源码必须用c++11来编译,因此gcc的CFLAGS增加-std=c++11。

2)由于UI_TYPE只能是qt4但又使用qt5的sdk,因此需要将MOC改为 moc-qt5,QTINCLUDE改为 -I /usr/include/qt5。

3)由于Qt5将Qt4中的QtGui进行了拆分,因此需要将UILIBS改为 -lQt5Gui -lQt5Core -lQt5Widgets。

4)在源码根目录下输入make或make all开始编译,编译时间比较长,大概要二十分钟左右。

5)在源码根目录下输入sudo make install安装,FBReader的安装过程比较特别,其中还包含了UI的编译(前面若输入make all则不包含),因此时间大概需要五分钟左右,注意要使用root权限,为了防止干扰到系统,不要使用系统安装目录,否则系统可能损坏。

6)编译安装完成后使用如下脚本启动程序:

#!/bin/sh

export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/Studio/Software/FBReader/lib:/Studio/Software/FBReader/lib/zlibrary/ui:/usr/lib64

/Studio/Software/FBReader/bin/FBReader

效果如下:

后记:

本次在龙芯派上成功使用FBReader是我为丰富龙芯生态迈出的一小步,希望自己量力而行,为国产信创贡献自己的一份力量。


接下来我粗略看了下FBReader的源码,发现它是用C++写的,体量中等,加上软件功能是常用的文档阅读类,个人感觉比较适合作一番源码分析,然而没有相关的设计资料,对C++语言也不算熟悉,因此对我来说这是有比较大的难度,目前只能逐步摸索。

从编译后生成的安装文件看,FBReader的代码大致可以分为如下几部分:

1)FBReader/bin/FBreader 主程序

2)FBReader/lib/libzlcore.so 核心动态库

FBreader/lib/libzltext.so文本动态库

FBreader/lib/zlibrary/ui/zlui-qt4.so界面动态库

3)FBReader/share/FBReader 主程序相关资源和配置文件

FBReader/share/pixmaps 应用程序的各种图标文件

FBReader/share/zlibrary 动态库相关资源和配置文件

下面分别加以分析

一. FBReader主程序

打开FBReader-master/fbreader文件夹,可以看到每个平台(比如pepperpad、zaurus和win32等,我们用的是desktop平台)都有一个资料夹,源代码则放在src资料夹中。

打开FBReader-master/fbreader/src文件夹,共有16个子文件夹:blockTree,bookmodel,database,encodingOption,external,fbreader,formats,library,libraryActions,libraryTree,migration,network,networkActions,networkTree,options,optionDialog。

需要做网站?需要网络推广?欢迎咨询客户经理 13272073477