lib_clapack.a(dlasyf.o): could not read symbols: File in wrong format---- 交叉编译opencv2.0遇到的错误解决
首先下载opencv2.0的源码http://www.pudn.com/downloads471/sourcecode/graph/opencv/detail1972436.html,opencv从2.1以后(包括2.1)无论安装到x86还是移植都必须使用cmake,移植的时候用cmake有时候又不能成功。无奈只能用opencv2.0,它还保留着./configure 、make 、make install三部曲安装的模式。安装过程可以参考我以前的博文:http://blog.csdn.net/yanzi1225627/article/details/7524698。这里我再收录一个make的时候出现的错误。下载后的源码解压缩,然后进到解压缩后的目录。注意下面的操作最好切换到root用户,否则有可能搜索不到交叉编译器的路径。
第一步,cofigure的配置为:
./configure --host=arm-linux --without-gtk --without-carbon --without-quicktime --without-1394libs --without-ffmpeg --without-python --without-swig --enable-static --enable-shared --disable-apps CXX=arm-linux-g++ CPPFLAGS=-I/usr/local/arm/4.5.1/arm-none-linux-gnueabi/include LDFLAGS=-L/usr/local/arm/4.5.1/arm-none-linux-gnueabi/libc/lib --with-v4l2 --prefix=/usr/local/arm/opencv --libdir=/usr/local/arm/opencv/lib -includedir=/usr/local/arm/opencv/include
这里关键的是CPPFLAGS、 LDFLAGS的路径,也就是交叉编译器的路径一定要社队。另外,--prefix、--libdir、-includedir是用来设置交叉编译安装的opencv的.so文件和include文件所存放的位置。确保--prefix=/usr/local/arm/opencv 这里的opencv文件夹存在,要提前建好。另外的lib和include不需要提前建。
第二步,输入make
这里要注意提前将png、jpg、zlib之类的用到的库安装,ubuntu下apt-get install,fedora下yum install。这是make成功的前提。在make的时候,有的机器会报错如下:
[cpp]
../3rdparty/.libs/lib_clapack.a(dlasyf.o): could not read symbols: File in wrong format
collect2: ld returned 1 exit status www.zzzyk.com
make[2]: *** [libcxcore.la] 错误 1
make[2]:正在离开目录 `/home/carson/download/OpenCV-2.0.0/src'
make[1]: *** [all-recursive] 错误 1
make[1]:正在离开目录 `/home/carson/download/OpenCV-2.0.0'
make: *** [all] 错误 2
lib_clapack.a(dlasyf.o): could not read symbols: File in wrong format这句是关键,google了一圈无解。经我研究发现,这是linux系统未装libtool导致的,因此一定要安装libtool。重新将opencv的源码解压至一个新的文件夹,进去后重新./configure 之后是make,错误就不见了。
第三步,make install。
补充:综合编程 , 其他综合 ,