Makefile和库的不良依赖关系

Makefile and library bad dependencies?

本文关键字:依赖 关系 不良 Makefile      更新时间:2023-10-16

我想在gtkmm/glade/c++上使用一些opencv类。在包含任何opencv代码之后,它工作得很好,但是如果我像这样将opencv添加到库中:libs = 'pkg-config…Opencv——libs的应用程序停止工作。在main的第一行(Gnome::Gda::init();)它崩溃与分割错误

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)

任何线索/提示/帮助将不胜感激!

链接时把库放在哪里会有很大的不同。

如果你有一个库libbeexample,使用:

 g++ -lexample myprog2.o
如果myprog2正在引用这些库函数,

将无法加载它们。

而不是使用:

g++ myprog2.o -lexample 

即在对象文件的引用后添加$(LIBS)