简单应用程序的 Makefile

发布于 2024-10-05 10:27:22 字数 563 浏览 3 评论 0原文

我有一个文件 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 中时会给出正确的输出。

I have a file app.c which uses two libraries GStreamer and libXml2. To compile the application I type the following on Terminal

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

When I try to Makefile with the contents as follows :

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

On running make command I get the errors as expected. What is the significance of

$(pkg-config --cflags --libs gstreamer-0.10)

on Echoing the above I get some files which when included in Makefile gives me the correct output.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

橘和柠 2024-10-12 10:27:22

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

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

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

pkg-config --cflags libraryX outputs the path to the header files of libraryX. Without this, the compiler does not know where to look for the header files, and compilation will fail.

Similarly, pkg-config --libs libraryX outputs the path to the actual compiled library files of libraryX. Without this, the linker does not know where to look for the library files, and linking will fail.

pkg-config --cflags --libs libraryX is just combining what I described above. Since you're using gcc to do both compilation and linking, you just pass those parameters together to gcc.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文