我有一个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中时,它给出了正确的输出。
答案 0 :(得分:2)
pkg-config --cflags libraryX
输出libraryX头文件的路径。如果没有这个,编译器就不知道在哪里查找头文件,编译就会失败。
同样,pkg-config --libs libraryX
输出libraryX
的实际编译库文件的路径。如果没有这个,链接器就不知道在哪里查找库文件,链接也会失败。
pkg-config --cflags --libs libraryX
正在结合我上面描述的内容。由于您使用gcc
进行编译和链接,因此您只需将这些参数一起传递给gcc
。