2010-12-02 63 views
0

我有一個文件app.c使用兩個庫GStreamer和libXml2。要編譯I型在終端Makefile爲一個簡單的應用程序

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中當一些文件給我正確的輸出的意義。

回答

2

pkg-config --cflags libraryX輸出到libraryX頭文件的路徑。否則,編譯器不知道在哪裏查找頭文件,編譯將失敗。

同樣,pkg-config --libs libraryX輸出實際編譯的庫文件libraryX的路徑。如果沒有這個,鏈接器不知道在哪裏查找庫文件,鏈接將失敗。

pkg-config --cflags --libs libraryX只是結合我上面描述的。由於您使用gcc來進行編譯和鏈接,因此您只需將這些參數一起傳遞給gcc即可。

+0

當我在主機上執行xml2-config --cflags時,輸出爲\t -I/usr/include/libxml2。但是當我在不同的處理器(guest)中這樣做時,我得到了錯誤的xml-config,雖然安裝了libxml2,但找不到它。我想從主機中爲客人編寫應用程序。 – w2lame 2010-12-02 13:32:28

相關問題