Ubuntu14.04LTS下使⽤mips-linux-gnu-gcc交叉编译OpenCV
所需库
⾮常感谢
blog.h5min/ajianyingxiaoqinghan/article/details/70194392
blog.h5min/zdyueguanyun/article/details/51322295
blog.csdn/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
参考/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
linux下gcc编译的四个步骤--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将会设置这个选项,链接时会有这个参数,编译出来的可执⾏程序的库⽂件搜索路径就得到扩展了。
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论