Re: [問題] 如何compile PulseAudio程式?

看板Linux作者時間15年前 (2010/10/24 03:32), 編輯推噓1(100)
留言1則, 1人參與, 最新討論串1/1
※ 引述《CSLabor.bbs@ptt.cc (電腦工人)》之銘言: > 下面是PulseAudio官網所提供的範例程式 > http://tinyurl.com/2ctqcog > 我想問的是 > 要如何Compile這個程式? > PulseAudio官網他只有教寫module時要如何編譯? > 卻沒有教開發Client程式時要如何編譯程式 我沒寫過 PA 的程式,不過這個程式要 compile 的話,如果沒有文件或註解 告訴你該怎樣下指令編譯,其實可以先觀察引入哪些 header file,由 header file 推測需要引入哪些 library,然後實際編譯看看。由那個範例可以推測, 需要引入 libpulse,所以先用 libpulse 試試看: $ gcc -Wall -o pacat-simple pacat-simple.c -lpulse /tmp/ccs2nUmb.o: In function `main': pacat-simple.c:(.text+0x12c): undefined reference to `pa_simple_new' pacat-simple.c:(.text+0x1a6): undefined reference to `pa_simple_drain' pacat-simple.c:(.text+0x206): undefined reference to `pa_simple_write' pacat-simple.c:(.text+0x27b): undefined reference to `pa_simple_free' collect2: ld returned 1 exit status 由 ld 吐出的錯誤可以發現,ld 在 libpulse 中找不到 pa_simple_* 等函式。 檢查一下 libpulse 相關套件的內容,看看是否還有提供其他 shared library (指令以 Ubuntu Linux 系統為例): $ dpkg-query -L libpulse-dev |grep 'libpulse.*so' /usr/lib/libpulse.so /usr/lib/libpulse-simple.so /usr/lib/libpulse-browse.so /usr/lib/libpulse-mainloop-glib.so 由套件內容可以發現,還有個 libpulse-simple 可以用,所以試試看: $ gcc -Wall -o pacat-simple pacat-simple.c -lpulse-simple $ ls pacat-simple pacat-simple.c 使用 libpulse-simple 之後就可以編譯成功了。用 ldd 檢查看看: $ ldd pacat-simple |grep -i pulse libpulse-simple.so.0 => /usr/lib/libpulse-simple.so.0 (0x00a94000) libpulse.so.0 => /usr/lib/libpulse.so.0 (0x00ba6000) libpulsecommon-0.9.21.so => /usr/lib/libpulsecommon-0.9.21.so (0x00cfe000) 編譯出來的 pacat-simple 確實有和 libpulse-simple.so 等 shared library 連結。 -- ※ Origin: SayYA 資訊站 <bbs.sayya.org> ◆ From: c-76-111-34-186.hsd1.ga.comcast.net

10/24 13:07, , 1F
謝謝幫忙
10/24 13:07, 1F
文章代碼(AID): #1CmpWo74 (Linux)