PJSIP2 0使用以及交叉編譯存在問題解決

2021-06-21 13:10:52 字數 3199 閱讀 6089

一、.pjsip 的 交叉編譯

./configure –host=arm-none-linux-gnueabi –target=arm-none-linux-gnueabi

生成的動態庫 在交叉編譯工具資料夾下 如果在開發板上執行程式的時候需要動態庫,把此資料夾下的動態庫拷貝到開發板的/usr/lib 下即可。

2.執行程式 進行呼叫時

會提示unable to find default audio device

這樣的錯誤

1. 可能是沒有安裝alsa庫 或者 alsa庫不夠新。

2. 是沒有聲音裝置。

二、下面以 unbuntu 安裝 als a 1.0.23 版本為例

alsa驅動是根據晶元組來驅動的,你可以先在終端裡執行lspci,找到 ****** audio device:看看晶元是什麼。最好是在

的vendors類別中找到你的主板晶元組,後面的編譯安裝過此中需要用到。以下以intel hd-audio為例(在需要填寫晶元組引數的地方填寫hda-intel)。

下面的步驟也可以參照所述。

3、解壓縮並安裝了alsa-driver-1.0.23包

# tar jxvf alsa-driver-1.0.23.tar.bz2

# cd alsa-driver-1.0.23

#./configure --with-cards=hda-intel --with-sequencer=yes

# make

# make install

在#./configure --with-cards=hda-intel --with-sequencer=yes命令中hda-intel就是你機器的晶元組所對應的。

4、解壓縮並安裝了alsa-lib-1.0.23包

# tar jxvf alsa-lib-1.0.23.tar.bz2

# cd alsa-lib-1.0.23

#./configure

# make

# make install

5、解壓縮並安裝了alsa-utils-1.0.23包

# tar jxvf alsa-utils-1.0.23.tar.bz2

# cd alsa-utils-1.0.23

#./configure

這一步出錯,錯誤為:configure: error: panelw library not found 解決方法如下:

# sudo ln -s libpanelw.so.5 /usr/lib/libpanelw.so

# sudo ln -s libformw.so.5 /usr/lib/libformw.so

# sudo ln -s libmenuw.so.5 /usr/lib/libmenuw.so

# sudo ln -s libncursesw.so.5 /lib/libncursesw.so

重新執行#./configure

# make

又報錯,錯誤為:

make[2]: xmlto: command not found

make[2]: *** [alsactl_init.7] error 127

也就是沒有xmlto,安裝就好了,

# sudo apt-get install xmlto

# make install

6、將驅動加入到核心

# sudo modprobe snd-hda-intel

# sudo modprobe snd-pcm-oss

# sudo modprobe snd-mixer-oss

# sudo modprobe snd-seq-oss

7、重啟系統,ok。可以使用alsactl -v檢視驅動版本

三.運用pjsip 庫 編譯 應用程式 可以利用pkg-config工具

一般來說,如果庫的標頭檔案不在/usr/include 等 目錄中 那麼在編譯的時候需要用 –i 引數指定其路徑 由於乙個庫在不同的系統上可能位於不同的目錄下,使用者安裝庫的時候也可以將庫安裝在不同的目錄下,所以即使使用同乙個庫 由於庫的路徑的不同,造成了用-i引數指定的標頭檔案的路徑也可能不同,其結果就是造成了編譯命令介面的不統一,如果使用-l引數,也會造成連線介面的不統一,編譯和連線介面不統一會為庫的使用帶來麻煩

為了解決編譯和連線介面不統一的問題,人們找到了一些解決方法。其基本思想是:事先把庫的位置資訊等儲存起來,需要的時候再通過特定的工具將其中有用的資訊提取出來供編譯和連線使用,這樣,就可以做到編譯和連線介面的一致性。

pkg-config 是通過庫提供的乙個 .pc檔案獲取庫的各種必要資訊的

在預設情況下,每個支援pkg-config的庫對應的 .pc檔案安裝後都位於安裝目錄的 lib/pkgconfig下 (usr/local/lib/pkgconfig)

使用pkg-config工具依賴於環境變數 pkg_config_path

設定pkg_config_path 指向.pc檔案所在的目錄

安裝完pjsip 後 在/usr/local/lib/pkgconfig 下 會有乙個名為 libpjproject.pc 的檔案

用 下面的命令 編譯應用程式

gcc ***.c –o *** `pkg-config --cflags --libs libpjproject`

如果編譯的應用程式 應用於開發板上 則在配置的時候要用交叉編譯。在開發板上執行應用程式是需要的各種庫,需要是交叉編譯後生成的庫。

但編譯時存在以下問題:

將會報錯下面四個變數沒有定義,開啟指定檔案 定義

#define sdl_yv12_overlay 32315659

#define sdl_iyuv_overlay 56555949

#define sdl_yuy2_overlay 32595559

#define sdl_uyvy_overlay 59565955

#define sdl_yvyu_overlay 55595659

在pjmeida/src/pjmedia-videodev/sdl_dev.c 中

找不到 sdl_pow 的定義

在sdl 庫中 的 src/video下 的sdl_pixels.c 中 增加這個函式的定義 函式體內 不用做任何事情

sdl_init 初始化失敗 修改pjmedia/src/pjmedia-videodev/sdl_dev.c 中的 sdl_init 函式中的if判斷 把其條件取反。

這三個檔案的交叉編譯在上篇已經說過,這裡不再累贅。

NSSortDescriptor使用以及陣列排序

nssortdescriptor 指定用於物件陣列排序的物件的屬性。物件可能是字典,這種情況就是對字典陣列排序 如果是employee物件需要按照name來排序,就生成下面的descriptor nssortdescriptor descriptor nssortdescriptor sortdes...

CMFCColorButton的使用以及重繪

cmfccolorbutton是visual studio 2008 sp1版本以上提供的顏色採集器。系統環境 windows 7 程式設計環境 visual studio 2008 sp1 下面介紹下使用步驟 1.新建基於對話方塊的工程,名稱為mycolorbuttondemo 2.拖動乙個按鈕到...

UITableviewCell使用以及自定義高度

uitableview號稱是 ios裡面最難使用也是最複雜的乙個控制項?是不是暫且不說,反正我覺得httprequest也是挺複雜的。但確實被uitableview折磨了一段時間,還好搞定了一小半。一 如何重用uitableviewcell 重用的目的是為了減少記憶體消耗,假如有1千個cell,如果...