Ubuntu 14.04 LTS下使用mips-linux-gnu-gcc交叉编译OpenCV所需库

非常感谢
http://blog.h5min.cn/ajianyingxiaoqinghan/article/details/70194392
http://blog.h5min.cn/zdyueguanyun/article/details/51322295
http://blog.csdn.net/tgww88/article/details/51393570


1、zlib的交叉编译:


./configure --prefix=$OPENCV_DEPEND
1
1
之后,对Makefile文件进行修改,修改内容如下: 


CC=mips-linux-gnu-gcc 
LDSHARED=mips-linux-gnu-gcc -shared -Wl,-soname,libz.so.1,--version-script,zlib.map
CPP=mips-linux-gnu-gcc -E




AR=mips-linux-gnu-ar
ARFLAGS=rc
RANLIB=mips-linux-gnu-gcc-ranlib 






2、libjpeg的交叉编译:


./configure --host=mips-linux-gnu --prefix=$OPENCV_DEPEND --enable-shared --enable-static
make
make install




3、libpng的交叉编译:


./configure --host=mips-linux-gnu --prefix=$OPENCV_DEPEND --enable-shared --enable-static
出错
configure: error: zlib not installed


export LDFLAGS=-L$ROOTFS_DIR/usr/local/mips/opencv-depend/lib
export CFLAGS=-I$ROOTFS_DIR/usr/local/mips/opencv-depend/include
./configure --host=mips-linux-gnu --prefix=$OPENCV_DEPEND --enable-shared --enable-static
make
仍然出错,提示
pnglibconf.c:33:19: fatal error: zlib.h: No such file or directory


参考http://code-by.org/viewtopic.php?f=55&t=169
vim Makefile +256改为
DEFAULT_INCLUDES = -I. -I/usr/local/mips/opencv-depend/include
make
make install


4、yasm的交叉编译:


CC=mips-linux-gnu-gcc ./configure --enable-shared --host=mips-linux-gnu --disable-asm --prefix=$OPENCV_DEPEND
make
make install




5、libx264的交叉编译:


CC=mips-linux-gnu-gcc ./configure --enable-shared --host=mips-linux-gnu --disable-asm --prefix=$OPENCV_DEPEND
make
make install




6、libxvid的交叉编译:


进入libxvid的目录后,再行进入其子目录中:


cd ./build/generic


然后输入命令:


./configure --prefix=$OPENCV_DEPEND --host=arm-linux --disable-assembly
make
make install




7、ffmpeg的交叉编译:


./configure --prefix=$OPENCV_DEPEND --enable-shared --disable-static --enable-gpl --enable-cross-compile --arch=mips --disable-stripping --target-os=linux --


enable-libx264 --enable-libxvid --cc=mips-linux-gnu-gcc --enable-swscale --extra-ldflags=-L$OPENCV_DEPEND/lib --extra-cflags=-l$OPENCV_DEPEND/include


./configure --prefix=$OPENCV_DEPEND --enable-shared --disable-static --enable-gpl --enable-cross-compile --arch=mips --disable-stripping --target-os=linux --


enable-libx264 --enable-libxvid --cc=mips-linux-gnu-gcc --enable-swscale --extra-ldflags=-L$OPENCV_DEPEND/lib --extra-cflags=-I$OPENCV_DEPEND/include


7,  ffmpeg 的交叉编译:


 ./configure --cross-prefix=mips-linux-gnu- --enable-cross-compile --target-os=linux --cc=mips-linux-gnu-gcc --arch=mips --prefix=$OPENCV_DEPEND --enable-shared 


--disable-static --enable-gpl --enable-nonfree --enable-ffmpeg --disable-ffplay --enable-ffserver --enable-swscale --enable-pthreads --disable-armv5te --


disable-armv6 --disable-armv6t2 --disable-yasm --disable-stripping --enable-libx264 --extra-ldflags=-L$OPENCV_DEPEND/lib --extra-cflags=-I$OPENCV_DEPEND/include 


--extra-libs=-ldl


make


make install
注:按照该流程安装时,下载ffmpeg 2.8版本,不要下载最新的ffmpeg 3.3版本!否则可能会像笔者编译OpenCV至21%时,显示make错误;




Makefile选项CFLAGS,LDFLAGS,LIBS
CFLAGS 表示用于 C 编译器的选项,
CXXFLAGS 表示用于 C++ 编译器的选项。
这两个变量实际上涵盖了编译和汇编两个步骤。


CFLAGS: 指定头文件(.h文件)的路径,如:CFLAGS=-I/usr/include -I/path/include。同样地,安装一个包时会在安装路径下建立一个include目录,当安装过程中出现问题时,试


着把以前安装的包的include目录加入到该变量中来。


LDFLAGS:gcc 等编译器会用到的一些优化参数,也可以在里面指定库文件的位置。用法:LDFLAGS=-L/usr/lib -L/path/to/your/lib。每安装一个包都几乎一定的会在安装目录里建立


一个lib目录。如果明明安装了某个包,而安装另一个包时,它愣是说找不到,可以抒那个包的lib路径加入的LDFALGS中试一下。


LIBS:告诉链接器要链接哪些库文件,如LIBS = -lpthread -liconv


简单地说,LDFLAGS是告诉链接器从哪里寻找库文件,而LIBS是告诉链接器要链接哪些库文件。不过使用时链接阶段这两个参数都会加上,所以你即使将这两个的值互换,也没有问题。


有时候LDFLAGS指定-L虽然能让链接器找到库进行链接,但是运行时链接器却找不到这个库,如果要让软件运行时库文件的路径也得到扩展,那么我们需要增加这两个库给"-Wl,R":


LDFLAGS = -L/var/xxx/lib -L/opt/mysql/lib -Wl,R/var/xxx/lib -Wl,R/opt/mysql/lib


如果在执行./configure以前设置环境变量export LDFLAGS="-L/var/xxx/lib -L/opt/mysql/lib -Wl,R/var/xxx/lib -Wl,R/opt/mysql/lib" ,注意设置环境变量等号两边不可以有空


格,而且要加上引号(shell的用法)。那么执行configure以后,Makefile将会设置这个选项,链接时会有这个参数,编译出来的可执行程序的库文件搜索路径就得到扩展了。

你可能感兴趣的:(Ubuntu 14.04 LTS下使用mips-linux-gnu-gcc交叉编译OpenCV所需库)