人生似水岂无涯,浮云吹作雪,世味煮成茶...

移植libqrencode到arm-linux平台

2022年05月06日 15:16    1 人评论    1400 人阅读

qrencode 库生成二维码图片需要 libpng 图片库支持,而 libpng 依赖于 zlib 库。zlib 是提供数据压缩用的函式库,使用 DEFLATE 算法,最初是为 libpng 函式库所写的,后来普遍为许多软件所使用。

交叉编译zlib

下载zlib

去 zlib 的 官网 http://www.zlib.net 下载 zlib 的源码包。

解压源码

解压源码到指定目录下(我这里解压到 ~/third_party ):

$ tar -zxvf zlib-1.2.11.tar.gz -C ~/third_party

配置编译

进入源码根目录:

$ cd ~/third_party/zlib-1.2.11/

创建 build 目录用于编译:

$ mkdir build

进入 build 目录生成配置:

$ cd build/
$ CC=arm-linux-gnueabihf-gcc LD=arm-linux-gnueabihf-ld AS=arm-linux-gnueabihf-as ../configure --prefix=$HOME/nfs_test/libqrencode

这里指定了编译和链接的交叉工具链,并指定了编译生成库的安装路径为 home 目录下的 /nfs_test/libqrencode 下。

编译并安装库:

$ make
$ make install

交叉编译libpng

下载libpng

去 libpng 的 官网 http://www.libpng.org/pub/png/pngcode.html 下载 libpng 的源码包。

解压源码

解压源码到指定目录下(我这里解压到 ~/third_party ):

$ tar -zxvf libpng-1.6.37.tar.gz -C ~/third_party

配置编译

进入源码根目录:

$ cd ~/third_party/libpng-1.6.37/

创建 build 目录用于编译:

$ mkdir build

进入 build 目录生成配置:

$ cd build/
$ ../configure --host=arm-linux-gnueabihf --prefix=$HOME/nfs_test/libqrencode --enable-shared=yes --enable-static=no CPPFLAGS=-I$HOME/nfs_test/libqrencode/include LDFLAGS=-L$HOME/nfs_test/libqrencode/lib LIBS=-lz

这里指定了编译的交叉工具链,并指定了编译生成库的安装路径为 home 目录下的 /nfs_test/libqrencode 下,以及 libpng 的依赖库 zlib 的路径。

编译并安装库:

$ make
$ make install

交叉编译libqrencode

下载libqrencode

去 libqrencode 的 官网 https://fukuchi.org/works/qrencode/index.html.en 下载 libqrencode 的源码包,目前最新版本的源码包为 qrencode-4.0.2.tar.gz 。

解压源码

解压源码到指定目录下(我这里解压到 ~/third_party ):

$ tar -zxvf qrencode-4.0.2.tar.gz -C ~/third_party

配置编译

进入源码根目录:

$ cd ~/third_party/qrencode-4.0.2/

创建 build 目录用于编译:

$ mkdir build

进入 build 目录生成配置:

$ cd build/
$ ../configure --host=arm-linux-gnueabihf --prefix=$HOME/nfs_test/libqrencode png_CFLAGS=-I$HOME/nfs_test/libqrencode/include png_LIBS="-L$HOME/nfs_test/libqrencode/lib -lz -lpng"

这里指定了编译的交叉工具链,并指定了编译生成库的安装路径为 home 目录下的 /nfs_test/libqrencode 下。

编译并安装库:

$ make
$ make install

测试移植结果

挂载 nfs_test 目录到 arm 开发板:

# mount -t nfs -o nolock 192.168.99.113:/home/arkinux/nfs_test /mnt

其中 192.168.99.113 为我虚拟机的 IP 地址。

挂载成功后,进入开发板查看 mnt 目录的内容:

# ls /mnt/
libqrencode

可以看到交叉编译后的 libqrencode 库。

将 libqrencode 下的 lib 的路径加入环境变量 LD_LIBRARY_PATH 中。

# export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/mnt/libqrencode/lib

进入 libqrencode/bin 下:

# cd /mnt/libqrencode/bin/

执行 qrencode 生成二维码图片:

./qrencode -o libqrencode.png "hello, libqrencode!"

可以看到当前目录下生成了 libqrencode.png 文件。 进入虚拟机的 libqrencode/bin 目录下,双击 libqrencode.png 打开文件,使用手机扫描生成的二维码,可以看到 "hello, libqrencode!" 字符串。


如果文章对您有所帮助, 请随意打赏! 您的支持将鼓励我写出更好的文章!

发表评论 已发布 1


best website to buy cialis    2022/10/14 05:25

online pharmacy nz cialis usa medical card cialis best website to buy cialis cheap cialis sale online generic cialis canada online pharmacy