2011-12-06 61 views
0

我想在我的gtkmm/glade/C++上使用一些opencv類。包括任何opencv代碼後,它工作得很好,但如果我像這樣添加opencv到庫:LIBS ='pkg-config ... opencv --libs'應用程序停止工作。在主的第一行(GNOME :: GDA ::的init();)崩潰分段故障Makefile和庫錯誤的依賴關係?

的Makefile

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) 

任何鉛/提示/幫助將不勝感激!

+4

我是否正確理解'make'完成沒有錯誤,並且它是在運行時崩潰的結果可執行文件?然後,我會尋找一個錯誤的第一個地方不是makefile,而是C++源代碼。 – eriktous

回答

2

鏈接時放置庫的位置會有很大差異。

如果你有一個圖書館libexample,使用:

g++ -lexample myprog2.o 

會失敗,如果myprog2被引用他們加載庫函數。

而是使用:

g++ myprog2.o -lexample 

也就是說,添加$(LIBS)參考後目標文件。

+0

也就是說,將'build:'後的行改爲'$(LD)$(OBJS)$(LIBS)-o cish' –

+0

同意,但是在鏈接階段出現錯誤會給出錯誤,對吧? – eriktous

+0

我做了你所說的,我移動$(LIBS)$(OBJS)後仍然拋出一個分段錯誤:( – wisuzu