日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > linux >内容正文

linux

jrtplib linux编译,jrtplib+jthread 交叉编译

發布時間:2024/8/1 linux 40 豆豆
生活随笔 收集整理的這篇文章主要介紹了 jrtplib linux编译,jrtplib+jthread 交叉编译 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

JRTPLIB庫是一個RTP協議的開源庫,使用這套庫文件,我們可以創建端到端的RTP連接,實現數據的實時傳輸。

JRTPLIB是使用標準c++編寫的.

tar -jxvf jrtplib-3.7.1.tar.bz2

tar -zxvf jthread-1.2.1.tar.gz

解壓后在當前文件夾下會生成rtplib-3.7.1,jthread-1.2.1兩個目錄。

安裝jthread

采用默認的安裝路徑,安裝結束后將回在/usr/local/include? /usr/local/lib下生成相應的頭文件與庫。此外,還需要指定編譯環境,將Host設置為arm -linux,CC設定為交叉編譯器的路徑,具體設置方法可以在終端中輸入./configure –help查看。

進入解壓文件目錄:

cd? jthread-1.2.1

在終端中輸入:

./configure -host=arm-linux CC=arm-linux-gcc CXX=arm-linux-g++

將生成一個Makefile文件。

執行

make

make install

jthread安裝完畢。

安裝JRtpLib

和安裝JThread類似

進入解壓后目錄

cd?? rtplib-3.7.1

執行配置文件

./configure -host=arm-linux CC=arm-linux-gcc CXX=arm-linux-g++

編譯:

第一種:

1. 遇到了第一個棘手的問題,提示can't retrieve login name,建立不了rtpsession。在rtpsession.cpp中。

后來發現是RTPSession::CreateCNAME這個函數搞得鬼

這個函數會從系統調用里獲取loginname,但是一般的板子由于內核和文件系統的原因都沒有loginname,所以

if (!gotlogin)

{

char *logname = getenv("LOGNAME");

if (logname == 0)

return ERR_RTP_SESSION_CANTGETLOGINNAME;//這里return了一個error

strncpy((char *)buffer,logname,*bufferlength);

}

所以我強制將logname的值設為root,就ok了。

2、有些人會遇到arm和pc無法互相接受數據包的問題,但是pc和pc,arm和arm就可以收到。我用sniffer抓了一下包發現確實是有數據包的,所以應該不是程序的問題。這個問題上網查了一下,也沒人說的明白,只有一個高人點了一下,可能是字節序和位域的問題。自己又研究了一下,也是一知半解。

一般x86的pc機是用小端字節序(little endian),而嵌入式平臺一般是大端字節序(big endian),可能是由于字節序的不同,導致了明明存在數據包,卻認不出來的問題

解決方法:在jrtplib3/src/rtpconfig_unix.h 中注銷掉大端模式

//#define RTP_BIG_ENDIAN // comment this if the target is a little endian system

//#define RTP_SUPPORT_THREAD

添加線程后編譯不通過,所以一起把線程宏定義注銷掉

第二種

gedit src/rtperrors.h

添加??#include gedit src/rtpconfig_unix.h

注釋掉 //#define RTP_BIG_ENDIAN // comment this if the target is a little endian system

gedit src/rtpsession.cpp

if (!gotlogin)

{

char *logname = getenv("LOGNAME");

char myname[] = {'R','u','n','S','h','e','n','g','\0'};

logname = myname;????????????????if (logname == 0)??//處理返回錯誤

return ERR_RTP_SESSION_CANTGETLOGINNAME;

strncpy((char *)buffer,logname,*bufferlength);

}

gedit examples/Makefile??//處理鏈接庫

INCLUDES = -I /usr/local/include/jthread -I ../src/

LDADD = ../src/.libs/libjrtp.a-L/usr/local/lib/ -ljthread -lpthread

make

make install

完成后,可以看到/usr/local/lib目錄下多了JThread和JRtpLib的庫文件:

參考以下兩篇:

總結

以上是生活随笔為你收集整理的jrtplib linux编译,jrtplib+jthread 交叉编译的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。