简体   繁体   English

在此Makefile中找到链接错误

[英]Find the Linking error in this Makefile

I'm trying to compile this piece of software called Register3D_wx but have problems when trying to run make. 我试图编译这个试图运行时化妆的软件称为Register3D_wx但有问题。 I have installed Open GSL, Open GL and wxWidgets library as required. 我已经根据需要安装了Open GSL,Open GL和wxWidgets库。 When I cd into the folder and run make, I get lots of error messages. 当我进入该文件夹并运行make时,我收到很多错误消息。 I'm giving some of the output: 我给出一些输出:

james@james-HP-Z420-Workstation:~/Downloads/Register3D_wx_1.1.1$ sudo make 
test -d bin/Release || mkdir -p bin/Release
test -d obj/Release/ann_1.1.2/src || mkdir -p obj/Release/ann_1.1.2/src
test -d obj/Release/ || mkdir -p obj/Release/
g++  -O2 -Wall `wx-config --cflags` `gsl-config --cflags` -Iann_1.1.2/include -c ann_1.1.2/src/kd_pr_search.cpp -o obj/Release/ann_1.1.2/src/kd_pr_search.o
gcc  -O2 -Wall `wx-config --cflags` `gsl-config --cflags` -Iann_1.1.2/include -c ZPR.cc -o obj/Release/ZPR.o
ZPR.cc: In member function ‘void ZPR::ZprPick(GLdouble, GLdouble, GLdouble, GLdouble)’:
ZPR.cc:424:26: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
          if (buffer[j+1]<minZ)
                          ^
ZPR.cc:380:11: warning: variable ‘min’ set but not used [-Wunused-but-set-variable]
    GLint  min  = -1;
           ^
g++  -O2 -Wall `wx-config --cflags` `gsl-config --cflags` -Iann_1.1.2/include -c ann_1.1.2/src/ANN.cpp -o obj/Release/ann_1.1.2/src/ANN.o
g++  -O2 -Wall `wx-config --cflags` `gsl-config --cflags` -Iann_1.1.2/include -c ann_1.1.2/src/bd_fix_rad_search.cpp -o obj/Release/ann_1.1.2/src/bd_fix_rad_search.o
g++  -O2 -Wall `wx-config --cflags` `gsl-config --cflags` -Iann_1.1.2/include -c ann_1.1.2/src/bd_pr_search.cpp -o obj/Release/ann_1.1.2/src/bd_pr_search.o
g++  -O2 -Wall `wx-config --cflags` `gsl-config --cflags` -Iann_1.1.2/include -c ann_1.1.2/src/bd_search.cpp -o obj/Release/ann_1.1.2/src/bd_search.o
g++  -O2 -Wall `wx-config --cflags` `gsl-config --cflags` -Iann_1.1.2/include -c ann_1.1.2/src/bd_tree.cpp -o obj/Release/ann_1.1.2/src/bd_tree.o
g++  -O2 -Wall `wx-config --cflags` `gsl-config --cflags` -Iann_1.1.2/include -c ann_1.1.2/src/brute.cpp -o obj/Release/ann_1.1.2/src/brute.o
g++  -O2 -Wall `wx-config --cflags` `gsl-config --cflags` -Iann_1.1.2/include -c ann_1.1.2/src/kd_dump.cpp -o obj/Release/ann_1.1.2/src/kd_dump.o
g++  -O2 -Wall `wx-config --cflags` `gsl-config --cflags` -Iann_1.1.2/include -c ann_1.1.2/src/kd_fix_rad_search.cpp -o obj/Release/ann_1.1.2/src/kd_fix_rad_search.o
gcc  -O2 -Wall `wx-config --cflags` `gsl-config --cflags` -Iann_1.1.2/include -c PointOP.cc -o obj/Release/PointOP.o
g++  -O2 -Wall `wx-config --cflags` `gsl-config --cflags` -Iann_1.1.2/include -c ann_1.1.2/src/kd_search.cpp -o obj/Release/ann_1.1.2/src/kd_search.o
g++  -O2 -Wall `wx-config --cflags` `gsl-config --cflags` -Iann_1.1.2/include -c ann_1.1.2/src/kd_split.cpp -o obj/Release/ann_1.1.2/src/kd_split.o
g++  -O2 -Wall `wx-config --cflags` `gsl-config --cflags` -Iann_1.1.2/include -c ann_1.1.2/src/kd_tree.cpp -o obj/Release/ann_1.1.2/src/kd_tree.o
g++  -O2 -Wall `wx-config --cflags` `gsl-config --cflags` -Iann_1.1.2/include -c ann_1.1.2/src/kd_util.cpp -o obj/Release/ann_1.1.2/src/kd_util.o
g++  -O2 -Wall `wx-config --cflags` `gsl-config --cflags` -Iann_1.1.2/include -c ann_1.1.2/src/perf.cpp -o obj/Release/ann_1.1.2/src/perf.o
gcc  -O2 -Wall `wx-config --cflags` `gsl-config --cflags` -Iann_1.1.2/include -c main.cc -o obj/Release/main.o
gcc  -O2 -Wall `wx-config --cflags` `gsl-config --cflags` -Iann_1.1.2/include -c MainWindow.cc -o obj/Release/MainWindow.o
gcc  -O2 -Wall `wx-config --cflags` `gsl-config --cflags` -Iann_1.1.2/include -c Cylinder.cc -o obj/Release/Cylinder.o
gcc  -O2 -Wall `wx-config --cflags` `gsl-config --cflags` -Iann_1.1.2/include -c GLCanvas.cc -o obj/Release/GLCanvas.o
gcc  -O2 -Wall `wx-config --cflags` `gsl-config --cflags` -Iann_1.1.2/include -c Help.cc -o obj/Release/Help.o
gcc  -O2 -Wall `wx-config --cflags` `gsl-config --cflags` -Iann_1.1.2/include -c ICP.cc -o obj/Release/ICP.o
ICP.cc: In member function ‘void ICP::SetPoints(std::vector<Point>&, std::vector<Point>&, float)’:
ICP.cc:439:73: warning: format ‘%i’ expects argument of type ‘int’, but argument 2 has type ‘std::vector<Point>::size_type {aka long unsigned int}’ [-Wformat=]
     printf("Number of points after downsampling: %i\n", m_points2.size());
                                                                         ^
gcc  -O2 -Wall `wx-config --cflags` `gsl-config --cflags` -Iann_1.1.2/include -c ICPDialog.cc -o obj/Release/ICPDialog.o
gcc  -O2 -Wall `wx-config --cflags` `gsl-config --cflags` -Iann_1.1.2/include -c About.cc -o obj/Release/About.o
gcc  -O2 -Wall `wx-config --cflags` `gsl-config --cflags` -Iann_1.1.2/include -c Math2.cc -o obj/Release/Math2.o
gcc  -O2 -Wall `wx-config --cflags` `gsl-config --cflags` -Iann_1.1.2/include -c Matrix.cc -o obj/Release/Matrix.o
gcc  -O2 -Wall `wx-config --cflags` `gsl-config --cflags` -Iann_1.1.2/include -c Misc.cc -o obj/Release/Misc.o
gcc  -O2 -Wall `wx-config --cflags` `gsl-config --cflags` -Iann_1.1.2/include -c MyANN.cc -o obj/Release/MyANN.o
gcc  -O2 -Wall `wx-config --cflags` `gsl-config --cflags` -Iann_1.1.2/include -c OGLWrapper.cc -o obj/Release/OGLWrapper.o
gcc  -O2 -Wall `wx-config --cflags` `gsl-config --cflags` -Iann_1.1.2/include -c Point.cc -o obj/Release/Point.o
g++  -s `wx-config --libs` `wx-config --libs gl` `gsl-config --libs` -Lann_1.1.2/include obj/Release/ann_1.1.2/src/kd_pr_search.o obj/Release/ZPR.o obj/Release/ann_1.1.2/src/ANN.o obj/Release/ann_1.1.2/src/bd_fix_rad_search.o obj/Release/ann_1.1.2/src/bd_pr_search.o obj/Release/ann_1.1.2/src/bd_search.o obj/Release/ann_1.1.2/src/bd_tree.o obj/Release/ann_1.1.2/src/brute.o obj/Release/ann_1.1.2/src/kd_dump.o obj/Release/ann_1.1.2/src/kd_fix_rad_search.o obj/Release/PointOP.o obj/Release/ann_1.1.2/src/kd_search.o obj/Release/ann_1.1.2/src/kd_split.o obj/Release/ann_1.1.2/src/kd_tree.o obj/Release/ann_1.1.2/src/kd_util.o obj/Release/ann_1.1.2/src/perf.o obj/Release/main.o obj/Release/MainWindow.o obj/Release/Cylinder.o obj/Release/GLCanvas.o obj/Release/Help.o obj/Release/ICP.o obj/Release/ICPDialog.o obj/Release/About.o obj/Release/Math2.o obj/Release/Matrix.o obj/Release/Misc.o obj/Release/MyANN.o obj/Release/OGLWrapper.o obj/Release/Point.o  -lz -lGLEW -lGL -lglut -o bin/Release/Register3D_wx
obj/Release/ICP.o: In function `ICP::SetPoints(std::vector<Point, std::allocator<Point> >&, std::vector<Point, std::allocator<Point> >&, float)':
ICP.cc:(.text+0x38c): undefined reference to `wxStringBase::npos'
ICP.cc:(.text+0x3a4): undefined reference to `wxStringBase::InitWith(wchar_t const*, unsigned long, unsigned long)'
ICP.cc:(.text+0x49a): undefined reference to `wxString::Format(wchar_t const*, ...)'
ICP.cc:(.text+0x593): undefined reference to `wxStringBase::npos'
ICP.cc:(.text+0x5ab): undefined reference to `wxStringBase::InitWith(wchar_t const*, unsigned long, unsigned long)'
ICP.cc:(.text+0x614): undefined reference to `wxString::Format(wchar_t const*, ...)'
ICP.cc:(.text+0x6d9): undefined reference to `wxStringBase::npos'
ICP.cc:(.text+0x6f1): undefined reference to `wxStringBase::InitWith(wchar_t const*, unsigned long, unsigned long)'
ICP.cc:(.text+0x7da): undefined reference to `wxString::Format(wchar_t const*, ...)'

I know I need to edit the Makefile but that's where I am stuck. 我知道我需要编辑Makefile,但这就是我遇到的问题。 I do have some experience with makesfiles but don't know what to do. 我的makefile文件确实有一些经验,但是不知道该怎么做。 Moreover, all the dependencies are are complied and the object files produced so I don't know why ICP.cc is having this undefined reference error. 此外,所有依赖项都已编译并生成了目标文件,因此我不知道为什么ICP.cc会出现此未定义的引用错误。 The makefile is: 生成文件为:

    #------------------------------------------------------------------------------#
# This makefile was generated by 'cbp2make' tool rev.107                       #
#------------------------------------------------------------------------------#


WRKDIR = `pwd`

CC = gcc
CXX = g++
AR = ar
LD = g++
WINDRES = windres

INC =  -Iann_1.1.2/include
CFLAGS = 
RESINC = 
LIBDIR =  -Lann_1.1.2/include
LIB = 
LDFLAGS = 

INC_RELEASE =  $(INC)
CFLAGS_RELEASE =  $(CFLAGS) -O2 -Wall `wx-config --cflags` `gsl-config --cflags`
RESINC_RELEASE =  $(RESINC)
RCFLAGS_RELEASE =  $(RCFLAGS)
LIBDIR_RELEASE =  $(LIBDIR)
LIB_RELEASE = $(LIB) -lz -lGLEW -lGL -lglut
LDFLAGS_RELEASE =  $(LDFLAGS) -s `wx-config --libs` `wx-config --libs gl` `gsl-config --libs`
OBJDIR_RELEASE = obj/Release
DEP_RELEASE = 
OUT_RELEASE = bin/Release/Register3D_wx

OBJ_RELEASE = $(OBJDIR_RELEASE)/ann_1.1.2/src/kd_pr_search.o $(OBJDIR_RELEASE)/ZPR.o $(OBJDIR_RELEASE)/ann_1.1.2/src/ANN.o $(OBJDIR_RELEASE)/ann_1.1.2/src/bd_fix_rad_search.o $(OBJDIR_RELEASE)/ann_1.1.2/src/bd_pr_search.o $(OBJDIR_RELEASE)/ann_1.1.2/src/bd_search.o $(OBJDIR_RELEASE)/ann_1.1.2/src/bd_tree.o $(OBJDIR_RELEASE)/ann_1.1.2/src/brute.o $(OBJDIR_RELEASE)/ann_1.1.2/src/kd_dump.o $(OBJDIR_RELEASE)/ann_1.1.2/src/kd_fix_rad_search.o $(OBJDIR_RELEASE)/PointOP.o $(OBJDIR_RELEASE)/ann_1.1.2/src/kd_search.o $(OBJDIR_RELEASE)/ann_1.1.2/src/kd_split.o $(OBJDIR_RELEASE)/ann_1.1.2/src/kd_tree.o $(OBJDIR_RELEASE)/ann_1.1.2/src/kd_util.o $(OBJDIR_RELEASE)/ann_1.1.2/src/perf.o $(OBJDIR_RELEASE)/main.o $(OBJDIR_RELEASE)/MainWindow.o $(OBJDIR_RELEASE)/Cylinder.o $(OBJDIR_RELEASE)/GLCanvas.o $(OBJDIR_RELEASE)/Help.o $(OBJDIR_RELEASE)/ICP.o $(OBJDIR_RELEASE)/ICPDialog.o $(OBJDIR_RELEASE)/About.o $(OBJDIR_RELEASE)/Math2.o $(OBJDIR_RELEASE)/Matrix.o $(OBJDIR_RELEASE)/Misc.o $(OBJDIR_RELEASE)/MyANN.o $(OBJDIR_RELEASE)/OGLWrapper.o $(OBJDIR_RELEASE)/Point.o

all: Release

clean: clean_Release

before_Release: 
    test -d bin/Release || mkdir -p bin/Release
    test -d $(OBJDIR_RELEASE)/ann_1.1.2/src || mkdir -p $(OBJDIR_RELEASE)/ann_1.1.2/src
    test -d $(OBJDIR_RELEASE)/ || mkdir -p $(OBJDIR_RELEASE)/

after_Release: 

Release: before_Release out_Release after_Release

out_Release: $(OBJ_RELEASE) $(DEP_RELEASE)
    $(LD) $(LDFLAGS_RELEASE) $(LIBDIR_RELEASE) $(OBJ_RELEASE) $(LIB_RELEASE) -o $(OUT_RELEASE)

$(OBJDIR_RELEASE)/ann_1.1.2/src/kd_pr_search.o: ann_1.1.2/src/kd_pr_search.cpp
    $(CXX) $(CFLAGS_RELEASE) $(INC_RELEASE) -c ann_1.1.2/src/kd_pr_search.cpp -o $(OBJDIR_RELEASE)/ann_1.1.2/src/kd_pr_search.o

$(OBJDIR_RELEASE)/ZPR.o: ZPR.cc
    $(CC) $(CFLAGS_RELEASE) $(INC_RELEASE) -c ZPR.cc -o $(OBJDIR_RELEASE)/ZPR.o

$(OBJDIR_RELEASE)/ann_1.1.2/src/ANN.o: ann_1.1.2/src/ANN.cpp
    $(CXX) $(CFLAGS_RELEASE) $(INC_RELEASE) -c ann_1.1.2/src/ANN.cpp -o $(OBJDIR_RELEASE)/ann_1.1.2/src/ANN.o

$(OBJDIR_RELEASE)/ann_1.1.2/src/bd_fix_rad_search.o: ann_1.1.2/src/bd_fix_rad_search.cpp
    $(CXX) $(CFLAGS_RELEASE) $(INC_RELEASE) -c ann_1.1.2/src/bd_fix_rad_search.cpp -o $(OBJDIR_RELEASE)/ann_1.1.2/src/bd_fix_rad_search.o

$(OBJDIR_RELEASE)/ann_1.1.2/src/bd_pr_search.o: ann_1.1.2/src/bd_pr_search.cpp
    $(CXX) $(CFLAGS_RELEASE) $(INC_RELEASE) -c ann_1.1.2/src/bd_pr_search.cpp -o $(OBJDIR_RELEASE)/ann_1.1.2/src/bd_pr_search.o

$(OBJDIR_RELEASE)/ann_1.1.2/src/bd_search.o: ann_1.1.2/src/bd_search.cpp
    $(CXX) $(CFLAGS_RELEASE) $(INC_RELEASE) -c ann_1.1.2/src/bd_search.cpp -o $(OBJDIR_RELEASE)/ann_1.1.2/src/bd_search.o

$(OBJDIR_RELEASE)/ann_1.1.2/src/bd_tree.o: ann_1.1.2/src/bd_tree.cpp
    $(CXX) $(CFLAGS_RELEASE) $(INC_RELEASE) -c ann_1.1.2/src/bd_tree.cpp -o $(OBJDIR_RELEASE)/ann_1.1.2/src/bd_tree.o

$(OBJDIR_RELEASE)/ann_1.1.2/src/brute.o: ann_1.1.2/src/brute.cpp
    $(CXX) $(CFLAGS_RELEASE) $(INC_RELEASE) -c ann_1.1.2/src/brute.cpp -o $(OBJDIR_RELEASE)/ann_1.1.2/src/brute.o

$(OBJDIR_RELEASE)/ann_1.1.2/src/kd_dump.o: ann_1.1.2/src/kd_dump.cpp
    $(CXX) $(CFLAGS_RELEASE) $(INC_RELEASE) -c ann_1.1.2/src/kd_dump.cpp -o $(OBJDIR_RELEASE)/ann_1.1.2/src/kd_dump.o

$(OBJDIR_RELEASE)/ann_1.1.2/src/kd_fix_rad_search.o: ann_1.1.2/src/kd_fix_rad_search.cpp
    $(CXX) $(CFLAGS_RELEASE) $(INC_RELEASE) -c ann_1.1.2/src/kd_fix_rad_search.cpp -o $(OBJDIR_RELEASE)/ann_1.1.2/src/kd_fix_rad_search.o

$(OBJDIR_RELEASE)/PointOP.o: PointOP.cc
    $(CC) $(CFLAGS_RELEASE) $(INC_RELEASE) -c PointOP.cc -o $(OBJDIR_RELEASE)/PointOP.o

$(OBJDIR_RELEASE)/ann_1.1.2/src/kd_search.o: ann_1.1.2/src/kd_search.cpp
    $(CXX) $(CFLAGS_RELEASE) $(INC_RELEASE) -c ann_1.1.2/src/kd_search.cpp -o $(OBJDIR_RELEASE)/ann_1.1.2/src/kd_search.o

$(OBJDIR_RELEASE)/ann_1.1.2/src/kd_split.o: ann_1.1.2/src/kd_split.cpp
    $(CXX) $(CFLAGS_RELEASE) $(INC_RELEASE) -c ann_1.1.2/src/kd_split.cpp -o $(OBJDIR_RELEASE)/ann_1.1.2/src/kd_split.o

$(OBJDIR_RELEASE)/ann_1.1.2/src/kd_tree.o: ann_1.1.2/src/kd_tree.cpp
    $(CXX) $(CFLAGS_RELEASE) $(INC_RELEASE) -c ann_1.1.2/src/kd_tree.cpp -o $(OBJDIR_RELEASE)/ann_1.1.2/src/kd_tree.o

$(OBJDIR_RELEASE)/ann_1.1.2/src/kd_util.o: ann_1.1.2/src/kd_util.cpp
    $(CXX) $(CFLAGS_RELEASE) $(INC_RELEASE) -c ann_1.1.2/src/kd_util.cpp -o $(OBJDIR_RELEASE)/ann_1.1.2/src/kd_util.o

$(OBJDIR_RELEASE)/ann_1.1.2/src/perf.o: ann_1.1.2/src/perf.cpp
    $(CXX) $(CFLAGS_RELEASE) $(INC_RELEASE) -c ann_1.1.2/src/perf.cpp -o $(OBJDIR_RELEASE)/ann_1.1.2/src/perf.o

$(OBJDIR_RELEASE)/main.o: main.cc
    $(CC) $(CFLAGS_RELEASE) $(INC_RELEASE) -c main.cc -o $(OBJDIR_RELEASE)/main.o

$(OBJDIR_RELEASE)/MainWindow.o: MainWindow.cc
    $(CC) $(CFLAGS_RELEASE) $(INC_RELEASE) -c MainWindow.cc -o $(OBJDIR_RELEASE)/MainWindow.o

$(OBJDIR_RELEASE)/Cylinder.o: Cylinder.cc
    $(CC) $(CFLAGS_RELEASE) $(INC_RELEASE) -c Cylinder.cc -o $(OBJDIR_RELEASE)/Cylinder.o

$(OBJDIR_RELEASE)/GLCanvas.o: GLCanvas.cc
    $(CC) $(CFLAGS_RELEASE) $(INC_RELEASE) -c GLCanvas.cc -o $(OBJDIR_RELEASE)/GLCanvas.o

$(OBJDIR_RELEASE)/Help.o: Help.cc
    $(CC) $(CFLAGS_RELEASE) $(INC_RELEASE) -c Help.cc -o $(OBJDIR_RELEASE)/Help.o

$(OBJDIR_RELEASE)/ICP.o: ICP.cc
    $(CC) $(CFLAGS_RELEASE) $(INC_RELEASE) -c ICP.cc -o $(OBJDIR_RELEASE)/ICP.o

$(OBJDIR_RELEASE)/ICPDialog.o: ICPDialog.cc
    $(CC) $(CFLAGS_RELEASE) $(INC_RELEASE) -c ICPDialog.cc -o $(OBJDIR_RELEASE)/ICPDialog.o

$(OBJDIR_RELEASE)/About.o: About.cc
    $(CC) $(CFLAGS_RELEASE) $(INC_RELEASE) -c About.cc -o $(OBJDIR_RELEASE)/About.o

$(OBJDIR_RELEASE)/Math2.o: Math2.cc
    $(CC) $(CFLAGS_RELEASE) $(INC_RELEASE) -c Math2.cc -o $(OBJDIR_RELEASE)/Math2.o

$(OBJDIR_RELEASE)/Matrix.o: Matrix.cc
    $(CC) $(CFLAGS_RELEASE) $(INC_RELEASE) -c Matrix.cc -o $(OBJDIR_RELEASE)/Matrix.o

$(OBJDIR_RELEASE)/Misc.o: Misc.cc
    $(CC) $(CFLAGS_RELEASE) $(INC_RELEASE) -c Misc.cc -o $(OBJDIR_RELEASE)/Misc.o

$(OBJDIR_RELEASE)/MyANN.o: MyANN.cc
    $(CC) $(CFLAGS_RELEASE) $(INC_RELEASE) -c MyANN.cc -o $(OBJDIR_RELEASE)/MyANN.o

$(OBJDIR_RELEASE)/OGLWrapper.o: OGLWrapper.cc
    $(CC) $(CFLAGS_RELEASE) $(INC_RELEASE) -c OGLWrapper.cc -o $(OBJDIR_RELEASE)/OGLWrapper.o

$(OBJDIR_RELEASE)/Point.o: Point.cc
    $(CC) $(CFLAGS_RELEASE) $(INC_RELEASE) -c Point.cc -o $(OBJDIR_RELEASE)/Point.o

clean_Release: 
    rm -f $(OBJ_RELEASE) $(OUT_RELEASE)
    rm -rf $(OBJDIR_RELEASE)/ann_1.1.2/src
    rm -rf $(OBJDIR_RELEASE)/

.PHONY: before_Release after_Release clean_Release

I see two potential problems here: 我在这里看到两个潜在的问题:

  1. You should use wx-config --libs std,gl to link with all normal wxWidgets libraries and wxWidgets OpenGL library instead of just the latter. 您应该使用wx-config --libs std,gl链接所有普通的wxWidgets库 wxWidgets OpenGL库,而不仅仅是后者。
  2. You should ensure that in your link command LDFLAGS_RELEASE comes after the object files, this is important if you're using static wxWidgets libraries. 你应该确保你的链接命令LDFLAGS_RELEASE而来的目标文件 ,这是非常重要的,如果你使用静态wxWidgets库。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM