Re: [問題] 如何compile PulseAudio程式?
※ 引述《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