我有一个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)在回显上面的内容时,我得到了一些文件,当包含在Makefile中时,这些文件会给出正确的输出。
发布于 2010-12-02 21:29:47
pkg-config --cflags libraryX输出libraryX的头文件的路径。如果不这样做,编译器就不知道在哪里查找头文件,编译将失败。
类似地,pkg-config --libs libraryX输出实际编译的libraryX库文件的路径。否则,链接器不知道在哪里查找库文件,链接将失败。
pkg-config --cflags --libs libraryX只是将我上面描述的内容组合在一起。由于使用gcc进行编译和链接,因此只需将这些参数一起传递给gcc即可。
https://stackoverflow.com/questions/4335451
复制相似问题