Undefined reference error while compiling a C program on Raspberry Pi
I have been trying, unsuccessfully, to compile my c program for using openCV on the linux-based operating system run on Raspberry Pi, Raspbian. The goal is to interface with the RPi camera, incorporating OpenCV. I have searched similar errors but only found mentions of C++ programs with this specific problem. I do not want this in C++, I want to solve the problem using C programming.
I am compiling a file ending in .c with the following command in the linux LXTerminal:
gcc -o testcode testcode.c
I repeatedly get the follow errors:
/tmp/cclhjysk.o: In function
cvDecRefData': testcode.c:(.text+0xe84): undefined reference to
cvFree_' testcode.c:(.text+0xf2c): undefined reference tocvFree_' /tmp/cclhjysk.o: In function
cvGetRow': testcode.c:(.text+0x10c4): undefined reference tocvGetRows' /tmp/cclhjysk.o: In function
cvGetCol': testcode.c:(.text+0x1104): undefined reference tocvGetCols' /tmp/cclhjysk.o: In function
cvReleaseMatND': testcode.c:(.text+0x112c): undefined reference tocvReleaseMat' /tmp/cclhjysk.o: In function
cvSubS': testcode.c:(.text+0x12f8): undefined reference tocvAddS' /tmp/cclhjysk.o: In function
cvCloneSeq': testcode.c:(.text+0x1344): undefined reference tocvSeqSlice' /tmp/cclhjysk.o: In function
cvSetNew': testcode.c:(.text+0x13cc): undefined reference tocvSetAdd' /tmp/cclhjysk.o: In function
cvGetSetElem': testcode.c:(.text+0x149c): undefined reference tocvGetSeqElem' /tmp/cclhjysk.o: In function
cvReadIntByName': testcode.c:(.text+0x1584): undefined reference tocvGetFileNodeByName' /tmp/cclhjysk.o: In function
cvReadRealByName': testcode.c:(.text+0x1670): undefined reference tocvGetFileNodeByName' /tmp/cclhjysk.o: In function
cvReadStringByName': testcode.c:(.text+0x1718): undefined reference tocvGetFileNodeByName' /tmp/cclhjysk.o: In function
cvReadByName': testcode.c:(.text+0x1764): undefined reference tocvGetFileNodeByName' testcode.c:(.text+0x1778): undefined reference to
cvRead' /tmp/cclhjysk.o: In functioncvContourPerimeter': testcode.c:(.text+0x17c0): undefined reference to
cvArcLength' /tmp/cclhjysk.o: In functioncvCalcHist': testcode.c:(.text+0x1800): undefined reference to
cvCalcArrHist' /tmp/cclhjysk.o: In functioncvEllipseBox': testcode.c:(.text+0x1908): undefined reference to
cvEllipse' /tmp/cclhjysk.o: In functioncvFont': testcode.c:(.text+0x1970): undefined reference to
cvInitFont' /tmp/cclhjysk.o: In functionmain': testcode.c:(.text+0x1a0c): undefined reference to
cvCreateCameraCapture' testcode.c:(.text+0x1a20): undefined reference toSetCaptureProperty' testcode.c:(.text+0x1a30): undefined reference to
SetCaptureProperty' testcode.c:(.text+0x1a40): undefined reference toSetCaptureProperty' testcode.c:(.text+0x1a50): undefined reference to
SetCaptureProperty' testcode.c:(.text+0x1a70): undefined reference tocvRetrieveFrame' testcode.c:(.text+0x1a7c): undefined reference to
cvGrabFrame' testcode.c:(.text+0x1a90): undefined reference to `cvGrabFramed' collect2: ld returned 1 exit status
I have searched through my RPi for files with mention of cvFree and have been unable to locate them, so I'm thinking that I might be missing a step in the download or excluding a header.
I have the following header files:
stdlib.h
stdio.h
math.h
opencv/cv.h
opencv/highgui.h
opencv/cvaux.h
Note: All the include statements are preceded with a pound/hashtag and the word "include," in addition to being surrounded by "<>" brackets.
I use the following calls (variable types only included in parameters ...
-lopencv_core -lopencv_imgproc -lopencv_highgui
berak,
What is the statement needed to include those opencv libs? I'm having difficulty finding these.
just add it to your cmdline
" I do not want this in C++" - you won't have any choice.
I've got it down to one undefined reference now, with those links to opencv libs. Now, my output is the following:
/usr/bin/ld: /tmp/ccAyCfME.o: undefined reference to symbol 'cvGrabFrame' //usr/local/lib/libopencv_videoio.so.3.0: error adding symbols: DSO missing from command line collect2: ld returned 1 exit status
for 2.4, the stuff from videoio is in highgui, too, so remove videoio from your makefile
I'm using opencv 3.0, and cmake version 2.8, is this the same for this version?
I'm still having issues linking to 'cvGrabFrame'... any ideas?