Qrencode4.1.1源码交叉编译(arm)及移植

文章介绍了在Ubuntu环境下,使用arm-linux-gnueabihf-gcc交叉编译器分别编译zlib-1.2.11、libpng-1.6.37及qrencode-4.1.1的详细步骤,包括解压源码、配置编译选项、修改Makefile设置交叉编译链,并最终完成静态库的构建。

简述:

源码文件下载zlib-1.2.11.tar.gz,libpng-1.6.37.tar.gz,qrencode-4.1.1.tar.bz2

交叉编译器:arm-linux-gnueabihf-gcc

1、交叉编译 zlib

1> 解压缩并创建目录

root@ubuntu:~/下载# tar xvzf zlib-1.2.11.tar.gz 
root@ubuntu:~/下载# mkdir /root/qrencode/zlib_arm
root@ubuntu:~/下载# cd zlib-1.2.11

2>配置

root@ubuntu:~/下载/zlib-1.2.11# ./configure --prefix=/root/qrencode/zlib_arm

配置完成后,打开Makefile文件修改交叉工具链

Makefile:

CC=/home/hebbe/gcc-linaro-4.9.4-2017.01-i686_arm-linux-gnueabihf/bin/arm-linux-gnueabihf-gcc
LDSHARED=/home/hebbe/gcc-linaro-4.9.4-2017.01-i686_arm-linux-gnueabihf/bin/arm-linux-gnueabihf-gcc  -shared -Wl,-soname,libz.so.1,--version-script,zlib.map
CPP=/home/hebbe/gcc-linaro-4.9.4-2017.01-i686_arm-linux-gnueabihf/bin/arm-linux-gnueabihf-gcc -E

3> make

4> make install

root@ubuntu:~/下载/zlib-1.2.11# make 
root@ubuntu:~/下载/zlib-1.2.11# make install

至此,zlib交叉编译完成。

2、交叉编译 libpng

1> 解压缩并创建目录

root@ubuntu:~/下载# tar xzvf libpng-1.6.37.tar.gz 
root@ubuntu:~/下载# mkdir /root/qrencode/libpng_arm
root@ubuntu:~/下载# cd libpng-1.6.37/

2>配置

因为在scripts目录下已经提供makefile,所以可把scripts目录下makefile.linux拷贝到源码包根目录中,且命名为makefile文件,然后修改makefile文件中交叉编译工具链路径、安装路径和zlib相关的库和头文件路径:

root@ubuntu:~/下载/libpng-1.6.37# cp scripts/makefile.linux makefile
root@ubuntu:~/下载/libpng-1.6.37# vi makefile
CC=/home/hebbe/gcc-linaro-4.9.4-2017.01-i686_arm-linux-gnueabihf/bin/arm-linux-gnueabihf-gcc
prefix=/root/qrencode/libpng_arm
ZLIBLIB=/root/qrencode/zlib_arm/lib
ZLIBINC=/root/qrencode/zlib_arm/include

3> make

4> make install

root@ubuntu:~/下载/libpng-1.6.37# make
root@ubuntu:~/下载/libpng-1.6.37# make install

至此,libpng交叉编译完成。

3、交叉编译 qrencode

1> 解压缩并创建目录

root@ubuntu:~/下载# tar -xjvf qrencode-4.1.1.tar.bz2 
root@ubuntu:~/下载# mkdir /root/qrencode/qrencode_arm
root@ubuntu:~/下载# cd qrencode-4.1.1

2>配置

这里编译的是静态库。

root@ubuntu:~/下载/qrencode-4.1.1# export png_CFLAGS="-I/root/qrencode/libpng_arm/include/libpng16 -I/root/qrencode/libpng_arm/include -I /root/qrencode/zlib_arm/include"
root@ubuntu:~/下载/qrencode-4.1.1# export png_LIBS="-L/root/qrencode/libpng_arm/lib -lpng16 -L/root/qrencode/zlib_arm/lib  -lz -lm"
root@ubuntu:~/下载/qrencode-4.1.1# ./configure --enable-static --disable-shared --prefix=/root/qrencode/qrencode_arm

配置完成后,打开Makefile修改交叉工具链

Makefile:

CC=/home/hebbe/gcc-linaro-4.9.4-2017.01-i686_arm-linux-gnueabihf/bin/arm-linux-gnueabihf-gcc
CPP=/home/hebbe/gcc-linaro-4.9.4-2017.01-i686_arm-linux-gnueabihf/bin/arm-linux-gnueabihf-gcc -E

3> make

4> make install

root@ubuntu:~/下载/qrencode-4.1.1# make
root@ubuntu:~/下载/qrencode-4.1.1# make install

至此,qrencode交叉编译完成。

至此,便可把/root/qrencode/移植到arm了。

4、移植

把/root/qrencode/所有lib文件夹下的库文件移植到arm板子的/usr/lib目录下

将 /root/qrencode/qrencode_arm/bin/qrencode 移植到板子的/usr/bin下

5、测试

qrencode -s 4 -o 4.png 1234567890 
qrencode -s 5 -o 5.png 1234567890 
qrencode -s 6 -o 6.png 1234567890
qrencode -s 25 -o 7.png 1234567890

6、完整输出信息

zlib完整输出信息如下:

root@ubuntu:~/下载# tar xvzf zlib-1.2.11.tar.gz 
zlib-1.2.11/
zlib-1.2.11/adler32.c
zlib-1.2.11/amiga/
zlib-1.2.11/ChangeLog
zlib-1.2.11/CMakeLists.txt
zlib-1.2.11/compress.c
zlib-1.2.11/configure
zlib-1.2.11/contrib/
zlib-1.2.11/crc32.c
zlib-1.2.11/crc32.h
zlib-1.2.11/deflate.c
zlib-1.2.11/deflate.h
zlib-1.2.11/doc/
zlib-1.2.11/examples/
zlib-1.2.11/FAQ
zlib-1.2.11/gzclose.c
zlib-1.2.11/gzguts.h
zlib-1.2.11/gzlib.c
zlib-1.2.11/gzread.c
zlib-1.2.11/gzwrite.c
zlib-1.2.11/INDEX
zlib-1.2.11/infback.c
zlib-1.2.11/inffast.c
zlib-1.2.11/inffast.h
zlib-1.2.11/inffixed.h
zlib-1.2.11/inflate.c
zlib-1.2.11/inflate.h
zlib-1.2.11/inftrees.c
zlib-1.2.11/inftrees.h
zlib-1.2.11/make_vms.com
zlib-1.2.11/Makefile
zlib-1.2.11/Makefile.in
zlib-1.2.11/msdos/
zlib-1.2.11/nintendods/
zlib-1.2.11/old/
zlib-1.2.11/os400/
zlib-1.2.11/qnx/
zlib-1.2.11/README
zlib-1.2.11/test/
zlib-1.2.11/treebuild.xml
zlib-1.2.11/trees.c
zlib-1.2.11/trees.h
zlib-1.2.11/uncompr.c
zlib-1.2.11/watcom/
zlib-1.2.11/win32/
zlib-1.2.11/zconf.h
zlib-1.2.11/zconf.h.cmakein
zlib-1.2.11/zconf.h.in
zlib-1.2.11/zlib.3
zlib-1.2.11/zlib.3.pdf
zlib-1.2.11/zlib.h
zlib-1.2.11/zlib.map
zlib-1.2.11/zlib.pc.cmakein
zlib-1.2.11/zlib.pc.in
zlib-1.2.11/zlib2ansi
zlib-1.2.11/zutil.c
zlib-1.2.11/zutil.h
zlib-1.2.11/win32/DLL_FAQ.txt
zlib-1.2.11/win32/Makefile.bor
zlib-1.2.11/win32/Makefile.gcc
zlib-1.2.11/win32/Makefile.msc
zlib-1.2.11/win32/README-WIN32.txt
zlib-1.2.11/win32/VisualC.txt
zlib-1.2.11/win32/zlib.def
zlib-1.2.11/win32/zlib1.rc
zlib-1.2.11/watcom/watcom_f.mak
zlib-1.2.11/watcom/watcom_l.mak
zlib-1.2.11/test/example.c
zlib-1.2.11/test/infcover.c
zlib-1.2.11/test/minigzip.c
zlib-1.2.11/qnx/package.qpg
zlib-1.2.11/os400/bndsrc
zlib-1.2.11/os400/make.sh
zlib-1.2.11/os400/README400
zlib-1.2.11/os400/zlib.inc
zlib-1.2.11/old/descrip.mms
zlib-1.2.11/old/Makefile.emx
zlib-1.2.11/old/Makefile.riscos
zlib-1.2.11/old/os2/
zlib-1.2.11/old/README
zlib-1.2.11/old/visual-basic.txt
zlib-1.2.11/old/os2/Makefile.os2
zlib-1.2.11/old/os2/zlib.def
zlib-1.2.11/nintendods/Makefile
zlib-1.2.11/nintendods/README
zlib-1.2.11/msdos/Makefile.bor
zlib-1.2.11/msdos/Makefile.dj2
zlib-1.2.11/msdos/Makefile.emx
zlib-1.2.11/msdos/Makefile.msc
zlib-1.2.11/msdos/Makefile.tc
zlib-1.2.11/examples/enough.c
zlib-1.2.11/examples/fitblk.c
zlib-1.2.11/examples/gun.c
zlib-1.2.11/examples/gzappend.c
zlib-1.2.11/examples/gzjoin.c
zlib-1.2.11/examples/gzlog.c
zlib-1.2.11/examples/gzlog.h
zlib-1.2.11/examples/README.examples
zlib-1.2.11/examples/zlib_how.html
zlib-1.2.11/examples/zpipe.c
zlib-1.2.11/examples/zran.c
zlib-1.2.11/doc/algorithm.txt
zlib-1.2.11/doc/rfc1950.txt
zlib-1.2.11/doc/rfc1951.txt
zlib-1.2.11/doc/rfc1952.txt
zlib-1.2.11/doc/txtvsbin.txt
zlib-1.2.11/contrib/ada/
zlib-1.2.11/contrib/amd64/
zlib-1.2.11/contrib/asm686/
zlib-1.2.11/contrib/blast/
zlib-1.2.11/contrib/delphi/
zlib-1.2.11/contrib/dotzlib/
zlib-1.2.11/contrib/gcc_gvmat64/
zlib-1.2.11/contrib/infback9/
zlib-1.2.11/contrib/inflate86/
zlib-1.2.11/contrib/iostream/
zlib-1.2.11/contrib/iostream2/
zlib-1.2.11/contrib/iostream3/
zlib-1.2.11/contrib/masmx64/
zlib-1.2.11/contrib/masmx86/
zlib-1.2.11/contrib/minizip/
zlib-1.2.11/contrib/pascal/
zlib-1.2.11/contrib/puff/
zlib-1.2.11/contrib/README.contrib
zlib-1.2.11/contrib/testzlib/
zlib-1.2.11/contrib/untgz/
zlib-1.2.11/contrib/vstudio/
zlib-1.2.11/contrib/vstudio/readme.txt
zlib-1.2.11/contrib/vstudio/vc10/
zlib-1.2.11/contrib/vstudio/vc11/
zlib-1.2.11/contrib/vstudio/vc12/
zlib-1.2.11/contrib/vstudio/vc14/
zlib-1.2.11/contrib/vstudio/vc9/
zlib-1.2.11/contrib/vstudio/vc9/miniunz.vcproj
zlib-1.2.11/contrib/vstudio/vc9/minizip.vcproj
zlib-1.2.11/contrib/vstudio/vc9/testzlib.vcproj
zlib-1.2.11/contrib/vstudio/vc9/testzlibdll.vcproj
zlib-1.2.11/contrib/vstudio/vc9/zlib.rc
zlib-1.2.11/contrib/vstudio/vc9/zlibstat.vcproj
zlib-1.2.11/contrib/vstudio/vc9/zlibvc.def
zlib-1.2.11/contrib/vstudio/vc9/zlibvc.sln
zlib-1.2.11/contrib/vstudio/vc9/zlibvc.vcproj
zlib-1.2.11/contrib/vstudio/vc14/miniunz.vcxproj
zlib-1.2.11/contrib/vstudio/vc14/minizip.vcxproj
zlib-1.2.11/contrib/vstudio/vc14/testzlib.vcxproj
zlib-1.2.11/contrib/vstudio/vc14/testzlibdll.vcxproj
zlib-1.2.11/contrib/vstudio/vc14/zlib.rc
zlib-1.2.11/contrib/vstudio/vc14/zlibstat.vcxproj
zlib-1.2.11/contrib/vstudio/vc14/zlibvc.def
zlib-1.2.11/contrib/vstudio/vc14/zlibvc.sln
zlib-1.2.11/contrib/vstudio/vc14/zlibvc.vcxproj
zlib-1.2.11/contrib/vstudio/vc12/miniunz.vcxproj
zlib-1.2.11/contrib/vstudio/vc12/minizip.vcxproj
zlib-1.2.11/contrib/vstudio/vc12/testzlib.vcxproj
zlib-1.2.11/contrib/vstudio/vc12/testzlibdll.vcxproj
zlib-1.2.11/contrib/vstudio/vc12/zlib.rc
zlib-1.2.11/contrib/vstudio/vc12/zlibstat.vcxproj
zlib-1.2.11/contrib/vstudio/vc12/zlibvc.def
zlib-1.2.11/contrib/vstudio/vc12/zlibvc.sln
zlib-1.2.11/contrib/vstudio/vc12/zlibvc.vcxproj
zlib-1.2.11/contrib/vstudio/vc11/miniunz.vcxproj
zlib-1.2.11/contrib/vstudio/vc11/minizip.vcxproj
zlib-1.2.11/contrib/vstudio/vc11/testzlib.vcxproj
zlib-1.2.11/contrib/vstudio/vc11/testzlibdll.vcxproj
zlib-1.2.11/contrib/vstudio/vc11/zlib.rc
zlib-1.2.11/contrib/vstudio/vc11/zlibstat.vcxproj
zlib-1.2.11/contrib/vstudio/vc11/zlibvc.def
zlib-1.2.11/contrib/vstudio/vc11/zlibvc.sln
zlib-1.2.11/contrib/vstudio/vc11/zlibvc.vcxproj
zlib-1.2.11/contrib/vstudio/vc10/miniunz.vcxproj
zlib-1.2.11/contrib/vstudio/vc10/miniunz.vcxproj.filters
zlib-1.2.11/contrib/vstudio/vc10/minizip.vcxproj
zlib-1.2.11/contrib/vstudio/vc10/minizip.vcxproj.filters
zlib-1.2.11/contrib/vstudio/vc10/testzlib.vcxproj
zlib-1.2.11/contrib/vstudio/vc10/testzlib.vcxproj.filters
zlib-1.2.11/contrib/vstudio/vc10/testzlibdll.vcxproj
zlib-1.2.11/contrib/vstudio/vc10/testzlibdll.vcxproj.filters
zlib-1.2.11/contrib/vstudio/vc10/zlib.rc
zlib-1.2.11/contrib/vstudio/vc10/zlibstat.vcxproj
zlib-1.2.11/contrib/vstudio/vc10/zlibstat.vcxproj.filters
zlib-1.2.11/contrib/vstudio/vc10/zlibvc.def
zlib-1.2.11/contrib/vstudio/vc10/zlibvc.sln
zlib-1.2.11/contrib/vstudio/vc10/zlibvc.vcxproj
zlib-1.2.11/contrib/vstudio/vc10/zlibvc.vcxproj.filters
zlib-1.2.11/contrib/untgz/Makefile
zlib-1.2.11/contrib/untgz/Makefile.msc
zlib-1.2.11/contrib/untgz/untgz.c
zlib-1.2.11/contrib/testzlib/testzlib.c
zlib-1.2.11/contrib/testzlib/testzlib.txt
zlib-1.2.11/contrib/puff/Makefile
zlib-1.2.11/contrib/puff/puff.c
zlib-1.2.11/contrib/puff/puff.h
zlib-1.2.11/contrib/puff/pufftest.c
zlib-1.2.11/contrib/puff/README
zlib-1.2.11/contrib/puff/zeros.raw
zlib-1.2.11/contrib/pascal/example.pas
zlib-1.2.11/contrib/pascal/readme.txt
zlib-1.2.11/contrib/pascal/zlibd32.mak
zlib-1.2.11/contrib/pascal/zlibpas.pas
zlib-1.2.11/contrib/minizip/configure.ac
zlib-1.2.11/contrib/minizip/crypt.h
zlib-1.2.11/contrib/minizip/ioapi.c
zlib-1.2.11/contrib/minizip/ioapi.h
zlib-1.2.11/contrib/minizip/iowin32.c
zlib-1.2.11/contrib/minizip/iowin32.h
zlib-1.2.11/contrib/minizip/make_vms.com
zlib-1.2.11/contrib/minizip/Makefile
zlib-1.2.11/contrib/minizip/Makefile.am
zlib-1.2.11/contrib/minizip/miniunz.c
zlib-1.2.11/contrib/minizip/miniunzip.1
zlib-1.2.11/contrib/minizip/minizip.1
zlib-1.2.11/contrib/minizip/minizip.c
zlib-1.2.11/contrib/minizip/minizip.pc.in
zlib-1.2.11/contrib/minizip/MiniZip64_Changes.txt
zlib-1.2.11/contrib/minizip/MiniZip64_info.txt
zlib-1.2.11/contrib/minizip/mztools.c
zlib-1.2.11/contrib/minizip/mztools.h
zlib-1.2.11/contrib/minizip/unzip.c
zlib-1.2.11/contrib/minizip/unzip.h
zlib-1.2.11/contrib/minizip/zip.c
zlib-1.2.11/contrib/minizip/zip.h
zlib-1.2.11/contrib/masmx86/bld_ml32.bat
zlib-1.2.11/contrib/masmx86/inffas32.asm
zlib-1.2.11/contrib/masmx86/match686.asm
zlib-1.2.11/contrib/masmx86/readme.txt
zlib-1.2.11/contrib/masmx64/bld_ml64.bat
zlib-1.2.11/contrib/masmx64/gvmat64.asm
zlib-1.2.11/contrib/masmx64/inffas8664.c
zlib-1.2.11/contrib/masmx64/inffasx64.asm
zlib-1.2.11/contrib/masmx64/readme.txt
zlib-1.2.11/contrib/iostream3/README
zlib-1.2.11/contrib/iostream3/test.cc
zlib-1.2.11/contrib/iostream3/TODO
zlib-1.2.11/contrib/iostream3/zfstream.cc
zlib-1.2.11/contrib/iostream3/zfstream.h
zlib-1.2.11/contrib/iostream2/zstream.h
zlib-1.2.11/contrib/iostream2/zstream_test.cpp
zlib-1.2.11/contrib/iostream/test.cpp
zlib-1.2.11/contrib/iostream/zfstream.cpp
zlib-1.2.11/contrib/iostream/zfstream.h
zlib-1.2.11/contrib/inflate86/inffas86.c
zlib-1.2.11/contrib/inflate86/inffast.S
zlib-1.2.11/contrib/infback9/infback9.c
zlib-1.2.11/contrib/infback9/infback9.h
zlib-1.2.11/contrib/infback9/inffix9.h
zlib-1.2.11/contrib/infback9/inflate9.h
zlib-1.2.11/contrib/infback9/inftree9.c
zlib-1.2.11/contrib/infback9/inftree9.h
zlib-1.2.11/contrib/infback9/README
zlib-1.2.11/contrib/gcc_gvmat64/gvmat64.S
zlib-1.2.11/contrib/dotzlib/DotZLib/
zlib-1.2.11/contrib/dotzlib/DotZLib.build
zlib-1.2.11/contrib/dotzlib/DotZLib.chm
zlib-1.2.11/contrib/dotzlib/DotZLib.sln
zlib-1.2.11/contrib/dotzlib/LICENSE_1_0.txt
zlib-1.2.11/contrib/dotzlib/readme.txt
zlib-1.2.11/contrib/dotzlib/DotZLib/AssemblyInfo.cs
zlib-1.2.11/contrib/dotzlib/DotZLib/ChecksumImpl.cs
zlib-1.2.11/contrib/dotzlib/DotZLib/CircularBuffer.cs
zlib-1.2.11/contrib/dotzlib/DotZLib/CodecBase.cs
zlib-1.2.11/contrib/dotzlib/DotZLib/Deflater.cs
zlib-1.2.11/contrib/dotzlib/DotZLib/DotZLib.cs
zlib-1.2.11/contrib/dotzlib/DotZLib/DotZLib.csproj
zlib-1.2.11/contrib/dotzlib/DotZLib/GZipStream.cs
zlib-1.2.11/contrib/dotzlib/DotZLib/Inflater.cs
zlib-1.2.11/contrib/dotzlib/DotZLib/UnitTests.cs
zlib-1.2.11/contrib/delphi/readme.txt
zlib-1.2.11/contrib/delphi/ZLib.pas
zlib-1.2.11/contrib/delphi/ZLibConst.pas
zlib-1.2.11/contrib/delphi/zlibd32.mak
zlib-1.2.11/contrib/blast/blast.c
zlib-1.2.11/contrib/blast/blast.h
zlib-1.2.11/contrib/blast/Makefile
zlib-1.2.11/contrib/blast/README
zlib-1.2.11/contrib/blast/test.pk
zlib-1.2.11/contrib/blast/test.txt
zlib-1.2.11/contrib/asm686/match.S
zlib-1.2.11/contrib/asm686/README.686
zlib-1.2.11/contrib/amd64/amd64-match.S
zlib-1.2.11/contrib/ada/buffer_demo.adb
zlib-1.2.11/contrib/ada/mtest.adb
zlib-1.2.11/contrib/ada/read.adb
zlib-1.2.11/contrib/ada/readme.txt
zlib-1.2.11/contrib/ada/test.adb
zlib-1.2.11/contrib/ada/zlib-streams.adb
zlib-1.2.11/contrib/ada/zlib-streams.ads
zlib-1.2.11/contrib/ada/zlib-thin.adb
zlib-1.2.11/contrib/ada/zlib-thin.ads
zlib-1.2.11/contrib/ada/zlib.adb
zlib-1.2.11/contrib/ada/zlib.ads
zlib-1.2.11/contrib/ada/zlib.gpr
zlib-1.2.11/amiga/Makefile.pup
zlib-1.2.11/amiga/Makefile.sas
root@ubuntu:~/下载# cd zlib-1.2.11
root@ubuntu:~/下载/zlib-1.2.11# ./configure --prefix=/root/qrencode/zlib_arm
Checking for gcc...
Checking for shared library support...
Building shared library libz.so.1.2.11 with gcc.
Checking for size_t... Yes.
Checking for off64_t... Yes.
Checkin
评论 2
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值