0

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.

Luca
  • 515
  • 5
  • 17
  • 1
    Please provide a [minimal, complete, and verifiable example](http://www.stackoverflow.com/help/mcve) – Barry Aug 12 '15 at 20:23

1 Answers1

0

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.

rs_
  • 433
  • 4
  • 12