OpenCV中文网站

 找回密码
 立即注册
搜索
热搜: 安装 配置
查看: 5976|回复: 2

请教arm-linux下编译程序的问题

[复制链接]
发表于 2009-1-18 17:54:11 | 显示全部楼层 |阅读模式
我写了一个简单的程序example.c 和makefile如下:
example.c
#include "cv.h"
#include "cxcore.h"

int main(int argc, char** argv)
{
    IplImage *img = 0;
    if(argv < 2){
        printf(&quot;...&quot;);
        exit(0);
    }
   
    img = cvLoadImage(argv[1]);
    cvReleaseImage(&img);
    return 0;
}

#makefile
all:  example

INCLUDE=/usr/local/arm/2.95.3/arm-linux/lib_opencv/include/opencv
LIBS=/usr/local/arm/2.95.3/arm-linux/lib_opencv/lib

CFLAGS=

example: example.c
        arm-linux-gcc $(CFLAGS) -I$(INCLUDE) -o example example.c -L$(LIBS)/libcv.a   -L$(LIBS)/libml.a -L$(LIBS)/libcvaux.a  -L$(LIBS)/libstdc++.a -L$(LIBS)/libcxcore.a -lpthread


.PHONY:clean
clean:
        rm -f example *.o

但是编译出问题,我发现是make的提示应该是缺少了libcxcore这个库,但是我已经添加了阿
不懂,请教高手

执行make,打印信息如下:
arm-linux-gcc  -I/usr/local/arm/2.95.3/arm-linux/lib_opencv/include/opencv -o example example.c -L/usr/local/arm/2.95.3/arm-linux/lib_opencv/lib/libcv.a -L/usr/local/arm/2.95.3/arm-linux/lib_opencv/lib/libcxcore.a  -L/usr/local/arm/2.95.3/arm-linux/lib_opencv/lib/libml.a -L/usr/local/arm/2.95.3/arm-linux/lib_opencv/lib/libcvaux.a  -L/usr/local/arm/2.95.3/arm-linux/lib_opencv/lib/libstdc++ -lpthread
In file included from /usr/local/arm/2.95.3/arm-linux/lib_opencv/include/opencv/cxcore.h:69,
                 from /usr/local/arm/2.95.3/arm-linux/lib_opencv/include/opencv/cv.h:58,
                 from example.c:1:
/usr/local/arm/2.95.3/arm-linux/lib_opencv/include/opencv/cxtypes.h:151: warning: redefinition of `ushort'
/usr/local/arm/2.95.3/lib/gcc-lib/arm-linux/2.95.3/../../../../arm-linux/include/sys/types.h:145: warning: `ushort' previously declared here
example.c: In function `main':
example.c:7: warning: comparison between pointer and integer
/tmp/ccxJvN4o.o: In function `cvDecRefData':
/tmp/ccxJvN4o.o(.text+0x1144): undefined reference to `cvFree_'
/tmp/ccxJvN4o.o(.text+0x120c): undefined reference to `cvFree_'
/tmp/ccxJvN4o.o: In function `cvGetRow':
/tmp/ccxJvN4o.o(.text+0x13bc): undefined reference to `cvGetRows'
/tmp/ccxJvN4o.o: In function `cvGetCol':
/tmp/ccxJvN4o.o(.text+0x1400): undefined reference to `cvGetCols'
/tmp/ccxJvN4o.o: In function `cvReleaseMatND':
/tmp/ccxJvN4o.o(.text+0x142c): undefined reference to `cvReleaseMat'
/tmp/ccxJvN4o.o: In function `cvSubS':
/tmp/ccxJvN4o.o(.text+0x15cc): undefined reference to `cvAddS'
/tmp/ccxJvN4o.o: In function `cvCloneSeq':
/tmp/ccxJvN4o.o(.text+0x1620): undefined reference to `cvSeqSlice'
/tmp/ccxJvN4o.o: In function `cvSetNew':
/tmp/ccxJvN4o.o(.text+0x16b0): undefined reference to `cvSetAdd'
/tmp/ccxJvN4o.o: In function `cvGetSetElem':
/tmp/ccxJvN4o.o(.text+0x178c): undefined reference to `cvGetSeqElem'
/tmp/ccxJvN4o.o: In function `cvEllipseBox':
/tmp/ccxJvN4o.o(.text+0x18d8): undefined reference to `cvEllipse'
/tmp/ccxJvN4o.o: In function `cvFont':
/tmp/ccxJvN4o.o(.text+0x1954): undefined reference to `cvInitFont'
/tmp/ccxJvN4o.o: In function `cvReadIntByName':
/tmp/ccxJvN4o.o(.text+0x1a40): undefined reference to `cvGetFileNodeByName'
/tmp/ccxJvN4o.o: In function `cvReadRealByName':
/tmp/ccxJvN4o.o(.text+0x1b1c): undefined reference to `cvGetFileNodeByName'
/tmp/ccxJvN4o.o: In function `cvReadStringByName':
/tmp/ccxJvN4o.o(.text+0x1bd0): undefined reference to `cvGetFileNodeByName'
/tmp/ccxJvN4o.o: In function `cvReadByName':
/tmp/ccxJvN4o.o(.text+0x1c20): undefined reference to `cvGetFileNodeByName'
/tmp/ccxJvN4o.o(.text+0x1c34): undefined reference to `cvRead'
/tmp/ccxJvN4o.o: In function `cvCreateSubdivDelaunay2D':
/tmp/ccxJvN4o.o(.text+0x1c78): undefined reference to `cvCreateSubdiv2D'
/tmp/ccxJvN4o.o(.text+0x1c98): undefined reference to `cvInitSubdivDelaunay2D'
/tmp/ccxJvN4o.o: In function `cvCalcHist':
/tmp/ccxJvN4o.o(.text+0x1f1c): undefined reference to `cvCalcArrHist'
/tmp/ccxJvN4o.o: In function `cvMean':
/tmp/ccxJvN4o.o(.text+0x201c): undefined reference to `cvAvg'
/tmp/ccxJvN4o.o: In function `cvSumPixels':
/tmp/ccxJvN4o.o(.text+0x2058): undefined reference to `cvSum'
/tmp/ccxJvN4o.o: In function `cvMean_StdDev':
/tmp/ccxJvN4o.o(.text+0x20a8): undefined reference to `cvAvgSdv'
/tmp/ccxJvN4o.o: In function `cvmPerspectiveProject':
/tmp/ccxJvN4o.o(.text+0x2118): undefined reference to `cvReshape'
/tmp/ccxJvN4o.o(.text+0x2130): undefined reference to `cvReshape'
/tmp/ccxJvN4o.o(.text+0x2148): undefined reference to `cvPerspectiveTransform'
/tmp/ccxJvN4o.o: In function `cvFillImage':
/tmp/ccxJvN4o.o(.text+0x2170): undefined reference to `cvGetElemType'
/tmp/ccxJvN4o.o(.text+0x2188): undefined reference to `cvColorToScalar'
/tmp/ccxJvN4o.o(.text+0x21c0): undefined reference to `cvSet'
/tmp/ccxJvN4o.o: In function `cvRandSetRange':
/tmp/ccxJvN4o.o(.text+0x2210): undefined reference to `cvError'
/tmp/ccxJvN4o.o(.text+0x2240): undefined reference to `cvError'
/tmp/ccxJvN4o.o: In function `cvRandInit':
/tmp/ccxJvN4o.o(.text+0x236c): undefined reference to `cvError'
/tmp/ccxJvN4o.o(.text+0x23a4): undefined reference to `cvError'
/tmp/ccxJvN4o.o: In function `cvRand':
/tmp/ccxJvN4o.o(.text+0x2458): undefined reference to `cvError'
/tmp/ccxJvN4o.o(.text+0x24b8): undefined reference to `cvRandArr'
/tmp/ccxJvN4o.o: In function `cvbCartToPolar':
/tmp/ccxJvN4o.o(.text+0x25ec): undefined reference to `cvCartToPolar'
/tmp/ccxJvN4o.o: In function `cvbFastArctan':
/tmp/ccxJvN4o.o(.text+0x2690): undefined reference to `cvCartToPolar'
/tmp/ccxJvN4o.o: In function `cvbSqrt':
/tmp/ccxJvN4o.o(.text+0x270c): undefined reference to `cvPow'
/tmp/ccxJvN4o.o: In function `cvbInvSqrt':
/tmp/ccxJvN4o.o(.text+0x2794): undefined reference to `cvPow'
/tmp/ccxJvN4o.o: In function `cvbReciprocal':
/tmp/ccxJvN4o.o(.text+0x281c): undefined reference to `cvPow'
/tmp/ccxJvN4o.o: In function `cvbFastExp':
/tmp/ccxJvN4o.o(.text+0x289c): undefined reference to `cvExp'
/tmp/ccxJvN4o.o: In function `cvbFastLog':
/tmp/ccxJvN4o.o(.text+0x2910): undefined reference to `cvLog'
/tmp/ccxJvN4o.o: In function `cvContourBoundingRect':
/tmp/ccxJvN4o.o(.text+0x2940): undefined reference to `cvBoundingRect'
/tmp/ccxJvN4o.o: In function `cvPseudoInverse':
/tmp/ccxJvN4o.o(.text+0x2974): undefined reference to `cvInvert'
/tmp/ccxJvN4o.o: In function `cvConvexHull':
/tmp/ccxJvN4o.o(.text+0x2a08): undefined reference to `cvConvexHull2'
/tmp/ccxJvN4o.o: In function `cvMinAreaRect':
/tmp/ccxJvN4o.o(.text+0x2a70): undefined reference to `cvMinAreaRect2'
/tmp/ccxJvN4o.o(.text+0x2a8c): undefined reference to `cvBoxPoints'
/tmp/ccxJvN4o.o: In function `cvFitLine3D':
/tmp/ccxJvN4o.o(.text+0x2bd8): undefined reference to `cvFitLine'
/tmp/ccxJvN4o.o: In function `cvFitLine2D':
/tmp/ccxJvN4o.o(.text+0x2cb4): undefined reference to `cvFitLine'
/tmp/ccxJvN4o.o: In function `cvFitEllipse':
/tmp/ccxJvN4o.o(.text+0x2d08): undefined reference to `cvFitEllipse2'
/tmp/ccxJvN4o.o: In function `cvProject3D':
/tmp/ccxJvN4o.o(.text+0x2e68): undefined reference to `cvTransform'
/tmp/ccxJvN4o.o: In function `cvHoughLines':
/tmp/ccxJvN4o.o(.text+0x2f08): undefined reference to `cvHoughLines2'
/tmp/ccxJvN4o.o: In function `cvHoughLinesP':
/tmp/ccxJvN4o.o(.text+0x2fac): undefined reference to `cvHoughLines2'
/tmp/ccxJvN4o.o: In function `cvHoughLinesSDiv':
/tmp/ccxJvN4o.o(.text+0x3044): undefined reference to `cvHoughLines2'
/tmp/ccxJvN4o.o: In function `cvFindFundamentalMatrix':
/tmp/ccxJvN4o.o(.text+0x30ac): undefined reference to `cvCreateMat'
/tmp/ccxJvN4o.o(.text+0x30c4): undefined reference to `cvCreateMat'
/tmp/ccxJvN4o.o(.text+0x3278): undefined reference to `cvFindFundamentalMat'
/tmp/ccxJvN4o.o(.text+0x3284): undefined reference to `cvReleaseMat'
/tmp/ccxJvN4o.o(.text+0x3290): undefined reference to `cvReleaseMat'
/tmp/ccxJvN4o.o: In function `cvFindChessBoardCornerGuesses':
/tmp/ccxJvN4o.o(.text+0x32ec): undefined reference to `cvFindChessboardCorners'
/tmp/ccxJvN4o.o: In function `cvCalibrateCamera':
/tmp/ccxJvN4o.o(.text+0x34b4): undefined reference to `cvCalibrateCamera2'
/tmp/ccxJvN4o.o: In function `cvCalibrateCamera_64d':
/tmp/ccxJvN4o.o(.text+0x3670): undefined reference to `cvCalibrateCamera2'
/tmp/ccxJvN4o.o: In function `cvFindExtrinsicCameraParams':
/tmp/ccxJvN4o.o(.text+0x37f4): undefined reference to `cvFindExtrinsicCameraParams2'
/tmp/ccxJvN4o.o: In function `cvFindExtrinsicCameraParams_64d':
/tmp/ccxJvN4o.o(.text+0x39a0): undefined reference to `cvFindExtrinsicCameraParams2'
/tmp/ccxJvN4o.o: In function `cvRodrigues':
/tmp/ccxJvN4o.o(.text+0x39f4): undefined reference to `cvRodrigues2'
/tmp/ccxJvN4o.o(.text+0x3a08): undefined reference to `cvRodrigues2'
/tmp/ccxJvN4o.o: In function `cvProjectPoints':
/tmp/ccxJvN4o.o(.text+0x3cb4): undefined reference to `cvProjectPoints2'
/tmp/ccxJvN4o.o: In function `cvProjectPointsSimple':
/tmp/ccxJvN4o.o(.text+0x3e18): undefined reference to `cvProjectPoints2'
/tmp/ccxJvN4o.o: In function `cvUnDistortOnce':
/tmp/ccxJvN4o.o(.text+0x3ea4): undefined reference to `cvUndistort2'
/tmp/ccxJvN4o.o: In function `cvUnDistortInit':
/tmp/ccxJvN4o.o(.text+0x3ee0): undefined reference to `cvGetRawData'
/tmp/ccxJvN4o.o: In function `cvUnDistort':
/tmp/ccxJvN4o.o(.text+0x406c): undefined reference to `cvGetRawData'
/tmp/ccxJvN4o.o: In function `cvCalcEMD':
/tmp/ccxJvN4o.o(.text+0x41d0): undefined reference to `cvCalcEMD2'
/tmp/ccxJvN4o.o: In function `cvKMeans':
/tmp/ccxJvN4o.o(.text+0x4218): undefined reference to `cvCreateMat'
/tmp/ccxJvN4o.o(.text+0x42e4): undefined reference to `cvKMeans2'
/tmp/ccxJvN4o.o(.text+0x42f0): undefined reference to `cvReleaseMat'
/tmp/ccxJvN4o.o: In function `cvStartScanGraph':
/tmp/ccxJvN4o.o(.text+0x433c): undefined reference to `cvError'
/tmp/ccxJvN4o.o(.text+0x434c): undefined reference to `cvCreateGraphScanner'
/tmp/ccxJvN4o.o(.text+0x437c): undefined reference to `cvFree_'
/tmp/ccxJvN4o.o: In function `cvEndScanGraph':
/tmp/ccxJvN4o.o(.text+0x43d4): undefined reference to `cvError'
/tmp/ccxJvN4o.o(.text+0x43ec): undefined reference to `cvAlloc'
/tmp/ccxJvN4o.o(.text+0x441c): undefined reference to `cvReleaseGraphScanner'
/tmp/ccxJvN4o.o: In function `cvLineAA':
/tmp/ccxJvN4o.o(.text+0x4474): undefined reference to `cvGetElemType'
/tmp/ccxJvN4o.o(.text+0x448c): undefined reference to `cvColorToScalar'
/tmp/ccxJvN4o.o(.text+0x44e0): undefined reference to `cvLine'
/tmp/ccxJvN4o.o: In function `cvCircleAA':
/tmp/ccxJvN4o.o(.text+0x4514): undefined reference to `cvGetElemType'
/tmp/ccxJvN4o.o(.text+0x4528): undefined reference to `cvColorToScalar'
/tmp/ccxJvN4o.o(.text+0x4574): undefined reference to `cvCircle'
/tmp/ccxJvN4o.o: In function `cvEllipseAA':
/tmp/ccxJvN4o.o(.text+0x45ac): undefined reference to `cvGetElemType'
/tmp/ccxJvN4o.o(.text+0x45c4): undefined reference to `cvColorToScalar'
/tmp/ccxJvN4o.o(.text+0x4644): undefined reference to `cvEllipse'
/tmp/ccxJvN4o.o: In function `cvPolyLineAA':
/tmp/ccxJvN4o.o(.text+0x4670): undefined reference to `cvGetElemType'
/tmp/ccxJvN4o.o(.text+0x4688): undefined reference to `cvColorToScalar'
/tmp/ccxJvN4o.o(.text+0x46d4): undefined reference to `cvPolyLine'
collect2: ld returned 1 exit status
回复

使用道具 举报

发表于 2009-1-18 18:07:06 | 显示全部楼层

请教arm-linux下编译程序的问题

makefile写的不对,
  1. example: example.c
  2. arm-linux-gcc $(CFLAGS) -I$(INCLUDE) -o example example.c -L$(LIBS)/libcv.a -L$(LIBS)/libml.a -L$(LIBS)/libcvaux.a -L$(LIBS)/libstdc++.a -L$(LIBS)/libcxcore.a -lpthread
复制代码
改成:
  1. example: example.c
  2. arm-linux-gcc $(CFLAGS) -I$(INCLUDE) -o example example.c -L$(LIBS) -lcv -lml -lcvaux -lstdc++ -lcxcore -lpthread
复制代码
前提是保证后面那几个库文件在你的LIBS目录下确实存在,且是合法的库文件。

具体原因可以参考我这篇帖子:
<!-- l --><a class=\"postlink-local\" href=\"http://www.opencv.org.cn/forum/viewtopic.php?f=1&t=5161\">viewtopic.php?f=1&t=5161</a><!-- l -->

另外,还有个细节需要注意,链接命令中静态库的先后顺序也是有讲究的,通常来说,如果lib1.a调用了lib2.a中的函数,那么-l1就要放在-l2的前面,但这并非标准的,取决于链接器扫描命令行参数的顺序。而且如果存在多个库文件之间的循环依赖,那这个办法也会失效,这时,只有把相关的几个库文件循环写两遍,比如:
  1. example: example.c
  2. arm-linux-gcc $(CFLAGS) -I$(INCLUDE) -o example example.c -L$(LIBS) -lcv -lml -lcvaux -lstdc++ -lcxcore -lcv -lml -lcvaux -lstdc++ -lcxcore -lpthread
复制代码
回复 支持 反对

使用道具 举报

发表于 2009-1-22 10:09:09 | 显示全部楼层

请教arm-linux下编译程序的问题

楼上的帖子写得赞!看了很有收获。
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|OpenCV中文网站

GMT+8, 2024-3-29 23:07 , Processed in 0.011090 second(s), 15 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表