• 3A4000架构银河麒麟V10编译安装filezilla


    最近因为甲方需求,要给其提供可断点续传的FTP客户端软件,跟银河麒麟公司联系,他们目前只有arm架构的filezilla,暂时还没有匹配3A4000下的filezilla,大概是还没有碰见这需求。无奈何,只能自己动手编译。
    目前最新的filezilla的版本是3.65,根据经验判断,对于国产自主可控平台的软件移植,通常安装的软件版本,版本号越低,碰见的麻烦就会越少,斟酌之下,从网上找了个3.58版本的filezilla。
    这里顺序记录正确的编译过程。

    一、FileZilla的依赖解决

    解压filiezilla-3.58源代码,其中有一个INSTALL文本文件,点开可看见其中内容。
    可见依赖关系如下:

    - libfilezilla 0.36.0 or greater
    - wxWidgets 3.0.4 or greater of the 3.0.x branch
    - libidn (only if not on Windows and not having gettaddrinfo with AI_IDN support)
    - Nettle 3.1 or greater
    - libdbus on *nix
    - sqlite3 3.7 or greater
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    可见编译过程如下:

    mkdir compile
    cd compile
    ../configure
    make
    make install
    
    • 1
    • 2
    • 3
    • 4
    • 5

    可以使用yum list installed *XXX*利用关键字查看依赖满足的情况,可以发现。在我的银河麒麟系统中,缺少的依赖主要是libfilezilla以及wxWidget库。按照选用可用的最低版本的原则,我下载了libfilezilla-0.36以及wxWidget-3.0.4。

    1.安装libfilezilla-0.36库

    安装libfilezilla库文件,需要特意去解决的依赖关系有:
    libfilezilla-0.36依赖于gnutls-3.7以上版本
    gnutls-3.7依赖于nettle-3.6以上版本
    在这部分依赖解决过程中,比较特别的是需要解决动态链接库以及库文件安装位置写入环境变量的问题。

    1)动态链接库的搜索位置设置

    因为默认的源代码安装的库文件的目录通常有两个,分别是/usr/lib以及/usr/local/lib,其中当搜索动态库时,前者目录默认是会被搜索的,而后者目录默认不会被搜索,因此需要修改配置项,即/etc/ld.so.conf,加入后者目录位置,修改方式如下

    sudo pluma /etc/ld.so.conf
    
    • 1

    而后添加一行内容,修改为:

    include /etc/ld.so.conf.d/*.conf
    /usr/local/lib
    
    • 1
    • 2

    保存之后,需要运行命令:

    sudo ldconfig
    
    • 1

    即生效。
    另外,注意!!!
    通过源代码编译库文件,在每次成功编译一个动态库文件后,都需要进行sudo ldconfig以更新动态库的链接,不然不会生效。

    2)./configure时依赖库搜索位置设置

    执行./configure,进行依赖库文件搜索时,默认只搜索/usr/lib/pkgconfig文件下的库文件配置信息,而/usr/local/lib/pkgconfig文件夹不会被搜索,因此需要修改PKG_CONFIG_PATH环境变量,将/usr/local/lib/pkgconfig写入环境变量。
    pkgconfig文件夹下保存的是一堆库文件的pc文件,即该库文件的版本之类的信息。
    具体的做法有两种,一种是临时添加到环境变量,即在命令行中输入:

    export PKG_CONFIG_PATH=/usr/local/lib/pkgconfig:$PKG_CONFIG_PATH
    
    • 1

    另一种方法是写入bashrc中,随终端启动每次都被执行。

    gedit ~/.bashrc
    
    • 1

    在最后一行添加相同内容:

    export PKG_CONFIG_PATH=/usr/local/lib/pkgconfig:$PKG_CONFIG_PATH
    
    • 1
    3)编译安装过程记录

    在修改完上述两条之后,操作如下:

    $ export PKG_CONFIG_PATH=/usr/local/lib/pkgconfig:$PKG_CONFIG_PATH
    $ tar -xf nettle-3.6.tar.gz 
    $ cd nettle-3.6/
    $ mkdir build
    $ cd build
    $ ../configure
    $ make -j4
    $ sudo make install
    $ cd ../..
    $ tar -xf gnutls-3.7.7.tar.xz
    $ cd gnutls-3.7.7
    $ mkdir build
    $ cd build
    $ ../configure --with-included-unistring
    $ make -j4
    $ sudo make install
    $ cd ../..
    $ tar -xf libfilezilla-0.36.0.tar.bz2
    $ cd libfilezilla-0.36.0/
    $ mkdir build
    $ cd build
    $ ../configure
    $ make -j4
    $ sudo make install
    $ cd ../..
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25

    2.安装wxWidget-3.0.4库

    在实际编译过程中,需要特意去解决的依赖关系有:
    wxWidget-3.0.4依赖于pugixml-1.12
    编译过程如下:

    $ unzip pugixml-1.12.zip
    $ cd pugixml-1.12/
    $ mkdir build
    $ cd build
    $ cmake ../CMakeLists.txt
    $ cd ..
    $ make -j4
    $ sudo make install
    $ cd ../..
    $ tar -xf wxWidgets-3.0.4.tar.bz2
    $ cd wxWidgets-3.0.4/
    $ mkdir build
    $ cd build
    $ ../configure
    $ make -j4
    $ sudo make install
    $ cd ../..
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17

    二、FileZilla的安装

    在解决完依赖后,安装过程如下:

    $ tar -xf FileZilla_3.58.0_src.tar.bz2
    $ cd filezilla-3.58.0/
    $ mkdir build
    $ cd build
    $ ../configure --without-dbus
    $ make -j4
    $ sudo make install
    $ cd ../..
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8

    三、总结

    1. 动态库的搜索目录需要添加/usr/local/lib
    2. configure的配置项记得添加/usr/local/lib/pkgconfig
    3. 记得源码编译安装完一个库后,尤其是动态库的话,记得执行一次ldconfig以写入环境变量。
    4. 源代码编译的依赖问题的解决,可多看看该库文件源代码下的说明文件。
    5. 最后,放上文章中所涉及的库文件源代码的下载地址,下载地址
  • 相关阅读:
    在Linux服务器上部署Spring项目
    hadoop生态现状、介绍、部署
    DP. 数字三角形模型
    一口气面了 6 家大厂,拿下 5 家 offer,分享下面试经验,想进大厂其实没有那么难
    spring ioc原理剖析上不包括DI
    MYSQL 基本操作 (3)
    labuladong算法——回溯框架
    重装系统以后怎么还原电脑原本的资料
    linux平台制作deb包
    数据安全治理科技系统能力-数据安全复合治理框架和模型解读(3)
  • 原文地址:https://blog.csdn.net/baidu_31788709/article/details/132676687