Повторное использование слегка измененного Makefile для слегка измененной программы выдает ошибку

Я сделал копию 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 содержит много кода и работает уже довольно давно.

0

Решение

Вы можете попробовать связать против libdl с -ldl добавлен в ваш второй LDLIBS+= линия. Вам также может понадобиться добавить путь libdl.so типично /usr/lib/ к первому LDLIBS+= линия.

Я не могу ответить, почему программа A компилируется с «тем же» make-файлом, в то время как программа B терпит неудачу, не смотря на программы или make-файлы.

0

Другие решения


По вопросам рекламы [email protected]