ubuntu 11.10 下安裝gstreamer 的開發環境

網絡上面有不少安裝gstreamer的文章,可是我在此也寫下,我在ubuntu下安裝gstreamer的過程,以方面網友的參考。 ubuntu

個人安裝並非很順利,由於我開始對gstreamer並不瞭解,故到網絡找了不少文章,可是都沒有成功,最後在網絡瀏覽中發現了另外兩篇文章,讓我成功安裝了gstreamer。 網絡

 1. 參考文章http://hi.baidu.com/zhupan19851230/item/fdcebb515ccacdd5d48bacb8,安裝了以下的gst的插件: 函數

gstreamer0.10-tools 測試

gstreamer0.10-x ui

gstreamer0.10-plugins-base spa

gstreamer0.10-plugins-good 插件

gstreamer0.10-plugins-ugly get

gstreamer0.10-plugins-bad 編譯器

gstreamer0.10-ffmpeg it

gstreamer0.10-alsa

gstreamer0.10-schroedinger

gstreamer0.10-pulseaudio

而且參考此文章,編寫了測試用例:

#include <gst/gst.h>
int main(int argc, char *argv[])
{
    const gchar *nano_str;
    guint major,minor, micro, nano;
    gst_init(&argc, &argv);
    gst_version(&major, &minor,&micro, &nano);
    if (nano == 1)
        nano_str="(CVS)";
    else if (nano==2)
       nano_str="(Prerelease)";
    else
      nano_str="";
     printf("This program is linked against GStreamer %d.%d.%d %s\n", major, minor, micro, nano_str);
 return 0;
}

採用介紹的方法,進行編譯,可是提示不能找到gst/gst.h,在網絡查找,大多都說沒有配置環境變量,我按着相應的說法配置了,還算不起做用。

 在不斷的搜索中,終於看見一篇文章說須要安裝頭文件,故使用命令以下命令安裝頭文件:

apt-get install libgstreamer*

安裝頭文件後,使用以下命令進行編譯:

gcc -Wall $(pkg-config --cflags --libs gstreamer-0.10)testgstream.cpp -o testgstream

又報以下的錯誤:

/tmp/ccrXw6CU.o: In function `main':
testgstream.cpp:(.text+0x18): undefined reference to `gst_init'
testgstream.cpp:(.text+0x3c): undefined reference to `gst_version'
collect2: ld returned 1 exit status

繼續搜索,結果發現有人說,應該按照以下的方式,進行編譯:

gcc -Wall testgstream.cpp -o testgstream $(pkg-config --cflags --libs gstreamer-0.10)

安裝這種方式,就編譯過了。

我在網絡查詢了gcc參數順序相關的問題,找到了以下的一段解釋,按照這個解釋就能很好的解釋上面的問題了

對於C/C++編譯而言,讀取編譯選項是按照從左到右的順序執行的(注1) 。那麼當編譯器遇到源文件的時候,就開始對源文件中用到的函數進行解析,找到相對應的函數的函數體或者說是實現(Definition of Function)。這個過程是按照先遇到不能解析的函數(unresolved function),而後在源文件選項後面的一些選項中尋找可能的函數體的信息,是這樣的一個順序進行的。那麼咱們能夠發現對於Makefile A,因爲包含函數體或者函數定義信息的編譯選項出如今源文件以前,那麼當編譯器在源文件中遇到不能解析的函數時,在源文件以後的選項中尋找相關的信息,那 麼就出現了編譯錯誤,也就是沒法找到相關的函數定義。

相關文章
相關標籤/搜索