交叉编译tesseract

Posted by zz on June 4, 2019

在linuxmint19上使用龙芯编译器交叉编译mips64el的libtesseract.so及liblept.so
参考 https://www.wandouip.com/t5i227081/ tesseract的版本为3.05.01

准备

配置环境变量

export PATH=/home/zww/Downloads/mips/mips-loongson-linux-gnu/2019.01-15/bin:$PATH
export CC=mips-linux-gnu-gcc
export CXX=mips-linux-gnu-g++
export CFLAGS="-mips64r2 -mabi=64"
export CPPFLAGS="-mips64r2 -mabi=64"

编译zlib

export CC=mips-linux-gnu-gcc
./configure --shared  --prefix="/home/zww/t/cross/zlib"
make clean && make && make install

编译jpeg

./configure  LDFLAGS="-L/home/zww/t/cross/zlib/lib"  LIBS="-lz" --host=mips64el-linux-gnu CC=mips-linux-gnu-gcc  --enable-shared --prefix="/home/zww/t/cross/jpeg"
make clean && make && make install

编译libpng

./configure  LIBS="-lz" CC=mips-linux-gnu-gcc CPPFLAGS="-I/home/zww/t/cross/zlib/include" LDFLAGS="-L/home/zww/t/cross/zlib/lib" --host=mips64el-linux-gnu --prefix=/home/zww/t/cross/png
make clean && make && make install

编译leptonica

export PKG_CONFIG_PATH=/home/zww/t/cross/zlib/lib/pkgconfig:/home/zww/t/cross/png/lib/pkgconfig:/home/zww/t/cross/jpeg/lib/pkgconfig:$PKG_CONFIG_PATH
export ZLIB_CFLAGS="-I/home/zww/t/cross/zlib/include"
export JPEG_CFLAGS="-I/home/zww/t/cross/jpeg/include"
export LIBPNG_CFLAGS="-I/home/zww/t/cross/png/include"
export LDFLAGS="-L/home/zww/t/cross/zlib/lib -L/home/zww/t/cross/png/lib -L/home/zww/t/cross/jpeg/lib/ "
./configure  LIBS="-ljpeg -lz -lpng" --host=mips64el-linux-gnu CC=mips-linux-gnu-gcc CXX=mips-linux-gnu-g++    --prefix="/home/zww/t/cross/leptonica"
make clean && make && make install

编译tesseract

sudo apt install autoconf automake libtool pkg-config
./autogen.sh
export PKG_CONFIG_PATH=/home/zww/t/cross/zlib/lib/pkgconfig:/home/zww/t/cross/png/lib/pkgconfig:/home/zww/t/cross/jpeg/lib/pkgconfig:/home/zww/t/cross/leptonica/lib/pkgconfig
# LDFLAGS需明确指定-mips64r2 -mabi=64,否则会编译32位的。。
export LDFLAGS="-L/home/zww/t/cross/zlib/lib -L/home/zww/t/cross/png/lib -L/home/zww/t/cross/jpeg/lib/ -L/home/zww/t/cross/leptonica/lib  -mips64r2 -mabi=64"
./configure  LIBS="-ljpeg -lz -lpng -llept" --host=mips64el-linux-gnu CC=mips-linux-gnu-gcc CXX=mips-linux-gnu-g++    --prefix="/home/zww/t/cross/tesseract"
# libtool存在bug,会使用32位的so导致链接失败
# 编辑libtool,将其中的so及lib路径全部换为64位对应路径,相关变量:
# compiler_lib_search_dirs  predep_objects  postdep_objects  compiler_lib_search_path
make clean && make && make install

libtool:

compiler_lib_search_dirs="/home/zww/Downloads/mips/mips-loongson-linux-gnu/2019.01-15/bin/../lib/gcc/mips-linux-gnu/7.3.1/64 /home/zww/Downloads/mips/mips-loongson-linux-gnu/2019.01-15/bin/../lib/gcc /home/zww/Downloads/mips/mips-loongson-linux-gnu/2019.01-15/bin/../lib/gcc/mips-linux-gnu/7.3.1/../../../../mips-linux-gnu/lib64 /home/zww/Downloads/mips/mips-loongson-linux-gnu/2019.01-15/bin/../mips-linux-gnu/libc//lib64 /home/zww/Downloads/mips/mips-loongson-linux-gnu/2019.01-15/bin/../mips-linux-gnu/libc//usr/lib64"
predep_objects="/home/zww/Downloads/mips/mips-loongson-linux-gnu/2019.01-15/bin/../mips-linux-gnu/libc//usr/lib64/crti.o /home/zww/Downloads/mips/mips-loongson-linux-gnu/2019.01-15/bin/../lib/gcc/mips-linux-gnu/7.3.1//64/crtbeginS.o"
postdep_objects="/home/zww/Downloads/mips/mips-loongson-linux-gnu/2019.01-15/bin/../lib/gcc/mips-linux-gnu/7.3.1/64/crtendS.o /home/zww/Downloads/mips/mips-loongson-linux-gnu/2019.01-15/bin/../mips-linux-gnu/libc//usr/lib64/crtn.o"
compiler_lib_search_path="-L/home/zww/Downloads/mips/mips-loongson-linux-gnu/2019.01-15/bin/../lib/gcc/mips-linux-gnu/7.3.1/64 -L/home/zww/Downloads/mips/mips-loongson-linux-gnu/2019.01-15/bin/../lib/gcc -L/home/zww/Downloads/mips/mips-loongson-linux-gnu/2019.01-15/bin/../lib/gcc/mips-linux-gnu/7.3.1/../../../../mips-linux-gnu/lib64 -L/home/zww/Downloads/mips/mips-loongson-linux-gnu/2019.01-15/bin/../mips-linux-gnu/libc//lib64 -L/home/zww/Downloads/mips/mips-loongson-linux-gnu/2019.01-15/bin/../mips-linux-gnu/libc//usr/lib64"