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 tocvFree_' testcode.c:(.text+0xf2c): undefined reference tocvFree_' /tmp/cclhjysk.o: In functioncvGetRow': testcode.c:(.text+0x10c4): undefined reference tocvGetRows' /tmp/cclhjysk.o: In functioncvGetCol': testcode.c:(.text+0x1104): undefined reference tocvGetCols' /tmp/cclhjysk.o: In functioncvReleaseMatND': testcode.c:(.text+0x112c): undefined reference tocvReleaseMat' /tmp/cclhjysk.o: In functioncvSubS': testcode.c:(.text+0x12f8): undefined reference tocvAddS' /tmp/cclhjysk.o: In functioncvCloneSeq': testcode.c:(.text+0x1344): undefined reference tocvSeqSlice' /tmp/cclhjysk.o: In functioncvSetNew': testcode.c:(.text+0x13cc): undefined reference tocvSetAdd' /tmp/cclhjysk.o: In functioncvGetSetElem': testcode.c:(.text+0x149c): undefined reference tocvGetSeqElem' /tmp/cclhjysk.o: In functioncvReadIntByName': testcode.c:(.text+0x1584): undefined reference tocvGetFileNodeByName' /tmp/cclhjysk.o: In functioncvReadRealByName': testcode.c:(.text+0x1670): undefined reference tocvGetFileNodeByName' /tmp/cclhjysk.o: In functioncvReadStringByName': testcode.c:(.text+0x1718): undefined reference tocvGetFileNodeByName' /tmp/cclhjysk.o: In functioncvReadByName': testcode.c:(.text+0x1764): undefined reference tocvGetFileNodeByName' testcode.c:(.text+0x1778): undefined reference tocvRead' /tmp/cclhjysk.o: In functioncvContourPerimeter': testcode.c:(.text+0x17c0): undefined reference tocvArcLength' /tmp/cclhjysk.o: In functioncvCalcHist': testcode.c:(.text+0x1800): undefined reference tocvCalcArrHist' /tmp/cclhjysk.o: In functioncvEllipseBox': testcode.c:(.text+0x1908): undefined reference tocvEllipse' /tmp/cclhjysk.o: In functioncvFont': testcode.c:(.text+0x1970): undefined reference tocvInitFont' /tmp/cclhjysk.o: In functionmain': testcode.c:(.text+0x1a0c): undefined reference tocvCreateCameraCapture' testcode.c:(.text+0x1a20): undefined reference toSetCaptureProperty' testcode.c:(.text+0x1a30): undefined reference toSetCaptureProperty' testcode.c:(.text+0x1a40): undefined reference toSetCaptureProperty' testcode.c:(.text+0x1a50): undefined reference toSetCaptureProperty' testcode.c:(.text+0x1a70): undefined reference tocvRetrieveFrame' testcode.c:(.text+0x1a7c): undefined reference tocvGrabFrame' 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_highguiberak,
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?