Makefile和库坏依赖?

时间:2011-12-06 19:33:22

标签: c++ opencv makefile gtkmm

我想在gtkmm / glade / c ++上使用一些opencv类。包含任何opencv代码后,它工作正常,但如果我将opencv添加到这样的libs:LIBS ='pkg-config ... opencv --libs'应用程序停止工作。在main的第一行(Gnome :: Gda :: init();)它崩溃并出现分段错误

生成文件

LD = g++
LIBS = `pkg-config gtkmm-2.4 glibmm-2.4 libgdamm-4.0 --libs`
CPPFLAGS = `pkg-config gtkmm-2.4 glibmm-2.4 libgdamm-4.0 --cflags`

OBJS = main.o TreeviewImages.o MainWindow.o FormDialog.o DBUtil.o

all: build

build: $(OBJS)
    $(LD) $(LIBS) $(OBJS) -o cish

main.o: main.cpp
   g++ $(CPPFLAGS) -c main.cpp

MainWindow.o: MainWindow.cpp MainWindow.h DBUtil.h FormDialog.h
    g++ $(CPPFLAGS) -c MainWindow.cpp

TreeviewImages.o: TreeviewImages.cpp TreeviewImages.h
    g++ $(CPPFLAGS) -c TreeviewImages.cpp

FormDialog.o: FormDialog.cpp FormDialog.h DBUtil.h
    g++ $(CPPFLAGS) -c FormDialog.cpp

DBUtil.o: DBUtil.cpp DBUtil.h
    g++ $(CPPFLAGS) -c DBUtil.cpp

clean:
    rm -f cish $(OBJS)

任何领导/提示/帮助将不胜感激!

1 个答案:

答案 0 :(得分:2)

链接时放置库会产生很大的不同。

如果您有一个库libexample,请使用:

 g++ -lexample myprog2.o
如果myprog2引用它们,

将无法加载库函数。

改为使用:

g++ myprog2.o -lexample 

也就是说,在引用目标文件之后添加$(LIBS)