Makefile用于简单的应用程序

时间:2010-12-02 13:23:13

标签: makefile compilation libxml2 gstreamer

我有一个app.c文件,它使用两个库GStreamer和libXml2。要编译应用程序,我在终端

上键入以下内容
gcc -Wall $(pkg-config --cflags --libs gstreamer-0.10) app.c -o app -I/usr/include/libxml2 -lxml2

当我尝试使用如下内容的Makefile时:

all:
        gcc -Wall $(pkg-config --cflags --libs gstreamer-0.10) app.c -o app -I/usr/include/libxml2 -lxml2
run:
        ./app
clean:
        rm app

在运行make命令时,我得到了预期的错误。

的意义何在?
$(pkg-config --cflags --libs gstreamer-0.10)

on Echoing上面我得到了一些文件,当包含在Makefile中时,它给出了正确的输出。

1 个答案:

答案 0 :(得分:2)

pkg-config --cflags libraryX输出libraryX头文件的路径。如果没有这个,编译器就不知道在哪里查找头文件,编译就会失败。

同样,pkg-config --libs libraryX输出libraryX的实际编译库文件的路径。如果没有这个,链接器就不知道在哪里查找库文件,链接也会失败。

pkg-config --cflags --libs libraryX正在结合我上面描述的内容。由于您使用gcc进行编译和链接,因此您只需将这些参数一起传递给gcc