简单应用程序的Makefile
我有一个app.c文件,它使用两个库GStreamer和libXml2。要编译应用程序,我在终端上键入以下命令简单应用程序的Makefile,makefile,compilation,libxml2,gstreamer,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 当我尝试生成包含以下内容的文件时: all: gcc -Wall $(pkg-config --cflags --libs gstreamer-0.10) app.c -o
gcc -Wall $(pkg-config --cflags --libs gstreamer-0.10) app.c -o app -I/usr/include/libxml2 -lxml2
当我尝试生成包含以下内容的文件时:
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中时,这些文件会为我提供正确的输出。pkg config--cflags libraryX
输出libraryX头文件的路径。否则,编译器不知道在哪里查找头文件,编译将失败
类似地,pkg config--libs libraryX
输出到libraryX
的实际编译库文件的路径。否则,链接器不知道在哪里查找库文件,链接将失败
pkg-config--cflags--libs-libraryX
只是结合了我上面描述的内容。由于您使用gcc
进行编译和链接,因此只需将这些参数一起传递到gcc
当我在主机上执行xml2 config--cflags时,我会得到输出-I/usr/include/libxml2作为输出。但是当我在另一个处理器(guest)中执行此操作时,我得到了错误xml config not found,尽管那里安装了libxml2。我想从主机为来宾编写应用程序。所谓“不同的处理器”,是指另一个用户名吗?来宾帐户可能没有正确设置PKG_CONFIG_PATH变量。尝试使用两个用户名执行echo$PKG\u CONFIG\u PATH
,并比较结果。此外,确保您正在使用bash
shell(在提示下键入bash
)。像Ubuntu这样的一些发行版的默认shell是dash
。我只是在一个dash
shell中尝试了这一点,但是命令扩展(后引号之间的位)没有得到正确的扩展。