我为一个名为程序 B 的新程序制作了一个适用于程序 A 的 makefile 的副本。为了简单起见,程序 B 与程序 A 具有所有相同的包含指令。对新 makefile 所做的唯一更改是对目标文件列表和创建的可执行文件的名称。我还可以确定编译错误不是由 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
感谢您的帮助,因此在此先感谢您。我对makeflies了解不多,所以我只是想有效地重用代码。
编辑
程序 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 本质上可以认为是 this 加上一个空的 int main(){ return0;},而程序 A 确实包含很多代码并且已经工作了很长一段时间。