Reusing Slightly Altered Makefile for Slightly Altered Program Gives Error

34 Views Asked by At

I made a copy of a makefile that worked for program A for a new program called program B. To keep things simple program B has all of the same include directives as program A. The only changes made to the new makefile are the obvious changes to the list of object files and the name of the created executable. I can also be sure that the compilation error is not caused by anything in main() or any of the functions of program B. Yet somehow I have an error when I use the make command that goes:

/usr/local/triclops/lib/libtriclops.a(triclops.o): In function `triclopsGetDynamicLibPath':
triclops.cpp:(.text+0x198): undefined reference to `dladdr'

In my makeflie I have the following relevant lines:

CPPFLAGS+=-I/usr/local/triclops/include

LDLIBS+=-L/usr/local/triclops/lib

LDLIBS+=-lpgrlibdcstereo -ltriclops -lpnmutils

I appreciate you help, so thanks in advance. I do not know a lot about makeflies, so I am just trying to reuse the code effectively.

EDIT

Both program A and program B have the same include directives

#include "stereoCamera.h"
#include "Aria.h"
#include <iostream>
#include <cstdio>
#include <cv.h>
#include <highgui.h>
#include <cmath>
#include <vector>
#include <opencv2/highgui/highgui.hpp>

Program B can be thought of essentially as this plus an empty int main(){ return0;} while program A does contain much code and has been working for quite some time now.

1

There are 1 best solutions below

0
On

You could try linking against libdl with -ldl added to your second LDLIBS+= line. You may also need to add the path of libdl.so typically /usr/lib/ to the first LDLIBS+= line.

I cannot answer why program A compiles with the 'same' makefile while program B fails without looking at the programs or the makefiles though.