Я сделал копию make-файла, который работал для программы A, для новой программы, называемой программой B. Для простоты программа B имеет все те же директивы, что и программа A. Единственными изменениями, внесенными в новый make-файл, являются очевидные изменения в список объектных файлов и имя созданного исполняемого файла. Я также могу быть уверен, что ошибка компиляции не вызвана ничем из main () или какой-либо из функций программы B. Тем не менее, у меня возникает ошибка при использовании команды make:
/usr/local/triclops/lib/libtriclops.a(triclops.o): In function `triclopsGetDynamicLibPath':
triclops.cpp:(.text+0x198): undefined reference to `dladdr'
В моем makeflie у меня есть следующие соответствующие строки:
CPPFLAGS+=-I/usr/local/triclops/include
LDLIBS+=-L/usr/local/triclops/lib
LDLIBS+=-lpgrlibdcstereo -ltriclops -lpnmutils
Я ценю вашу помощь, поэтому спасибо заранее. Я не очень разбираюсь в мухах, поэтому просто пытаюсь эффективно использовать код.
РЕДАКТИРОВАТЬ
И программа A, и программа B имеют одинаковые директивы включения
#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>
Программу B можно по существу представить как это плюс пустой int main () {return0;}, в то время как программа A содержит много кода и работает уже довольно давно.
Вы можете попробовать связать против libdl
с -ldl
добавлен в ваш второй LDLIBS+=
линия. Вам также может понадобиться добавить путь libdl.so
типично /usr/lib/
к первому LDLIBS+=
линия.
Я не могу ответить, почему программа A компилируется с «тем же» make-файлом, в то время как программа B терпит неудачу, не смотря на программы или make-файлы.