libmediasoup 编译

cmake . -Bbuild -DLIBWEBRTC_INCLUDE_PATH:PATH=/home/yq/share/src/mediasoup/client/libwebrtc/src  -DLIBWEBRTC_BINARY_PATH:PATH=/home/yq/share/src/mediasoup/client/libwebrtc/src/out/mybuild-m79/obj -DMEDIASOUPCLIENT_BUILD_TESTS=no -DMEDIASOUPCLIENT_LOG_DEV=true -DMEDIASOUPCLIENT_LOG_TRACE=true

编译成功后的结果:

find . -name "*.a"

./build/libsdptransform/libsdptransform.a

./build/libmediasoupclient.a

问题:

/home/yq/share/src/mediasoup/client/libmediasoupclient/src/ortc.cpp:891:69: error: use of deleted function ‘bool std::regex_match(const std::__cxx11::basic_string<_Ch_type, _Ch_traits, _Ch_alloc>&&, std::__cxx11::match_results<typename std::__cxx11::basic_string<_Ch_type, _Ch_traits, _Ch_alloc>::const_iterator, _Alloc>&, const std::__cxx11::basic_regex<_Ch_type, _Rx_traits>&, std::regex_constants::match_flag_type) [with _Ch_traits = std::char_traits<char>; _Ch_alloc = std::allocator<char>; _Alloc = std::allocator<std::__cxx11::sub_match<__gnu_cxx::__normal_iterator<const char*, std::__cxx11::basic_string<char> > > >; _Ch_type = char; _Rx_traits = std::__cxx11::regex_traits<char>; typename std::__cxx11::basic_string<_Ch_type, _Ch_traits, _Ch_alloc>::const_iterator = __gnu_cxx::__normal_iterator<const char*, std::__cxx11::basic_string<char> >]’

    std::regex_match(roleIt->get<std::string>(), roleMatch, RoleRegex);

                                                                    ^

解决:

https://mlog.club/article/184431

cmake . -Bbuild  -DLIBWEBRTC_INCLUDE_PATH:PATH="/home/yq/share/src/mediasoup/client/libwebrtc/src"  -DLIBWEBRTC_BINARY_PATH:PATH="/home/yq/share/src/mediasoup/client/libwebrtc/src/out/mybuild-m79/obj"  -DOPENSSL_INCLUDE_DIR:PATH="/usr/local/include"  -DCMAKE_USE_OPENSSL=ON

编译注意事项:

      cpr 里边有个libcurl.so 需要依赖openssl 相关的库,  libwebrtc.a 也有同样的依赖,  所以在编译libcurl.so 时依赖的openssl 相关的库和头文件必须是 libwebrtc.a 所依赖的头文件和库;

依赖的库有 libssl.a libcrypto.a;

路径为: 

openssl 头文件路径为:

src/build/linux/debian_sid_amd64-sysroot/usr/include/openssl

另外需要注意的是x86_64平台的相关配置需要copy到openssl头文件里边: 

cp src/build/linux/debian_sid_amd64-sysroot/usr/include/x86_64-linux-gnu/openssl/*   

src/build/linux/debian_sid_amd64-sysroot/usr/include/openssl

以上的cmake 选项只指定了头文件路径, 没有指定库的路径,  所以需要把webrtc中的相关库复制到系统路径:

cd webrtc:

sudo cp ./src/build/linux/debian_sid_amd64-sysroot/usr/lib/x86_64-linux-gnu/libssl.a /usr/local/lib/

sudo cp ./src/build/linux/debian_sid_amd64-sysroot/usr/lib/x86_64-linux-gnu/libcrypto.a /usr/local/lib/

sudo rm /usr/local/include/openssl -r

sudo cp ./src/build/linux/debian_sid_amd64-sysroot/usr/include/openssl /usr/local/include/openssl -r

把x86_64 openssl 的配置头文件copy过去:

sudo  cp ./src/build/linux/debian_sid_amd64-sysroot/usr/include/x86_64-linux-gnu/openssl/* /usr/local/include/openssl/

make -C build

问题:

[  0%] Linking C shared library ../../../../lib/libcurl.so

/usr/bin/ld: /usr/local/lib/libssl.a(s3_clnt.o): relocation R_X86_64_PC32 against symbol `ssl3_get_server_hello' can not be used when making a shared object; recompile with -fPIC

/usr/bin/ld: 最后的链结失败: 错误的值

解决:

      需要把/usr/local/lib/libssl.a 替换为webrtc 目录下的libssl.a

      所在目录:  src/build/linux/debian_sid_amd64-sysroot/usr/lib/x86_64-linux-gnu/libssl.a

问题:

/home/yq/share/src/mediasoup/demo/mediasoup-broadcaster-demo/deps/libmediasoupclient/include/Logger.hpp:55:25: error: ‘uint8_t’ was not declared in this scope

解决:

https://stackoverflow.com/questions/1971062/error-uint8-t-has-not-been-declared

问题:

/home/yq/share/src/mediasoup/demo/mediasoup-broadcaster-demo/deps/libmediasoupclient/src/ortc.cpp: In function ‘void mediasoupclient::ortc::validateRtpCodecCapability(json&)’:

/home/yq/share/src/mediasoup/demo/mediasoup-broadcaster-demo/deps/libmediasoupclient/src/ortc.cpp:106:81: error: use of deleted function ‘bool std::regex_match(const std::__cxx11::basic_string<_Ch_type, _Ch_traits, _Ch_alloc>&&, std::__cxx11::match_results<typename std::__cxx11::basic_string<_Ch_type, _Ch_traits, _Ch_alloc>::const_iterator, _Alloc>&, const std::__cxx11::basic_regex<_Ch_type, _Rx_traits>&, std::regex_constants::match_flag_type) [with _Ch_traits = std::char_traits<char>; _Ch_alloc = std::allocator<char>; _Alloc = std::allocator<std::__cxx11::sub_match<__gnu_cxx::__normal_iterator<const char*, std::__cxx11::basic_string<char> > > >; _Ch_type = char; _Rx_traits = std::__cxx11::regex_traits<char>; typename std::__cxx11::basic_string<_Ch_type, _Ch_traits, _Ch_alloc>::const_iterator = __gnu_cxx::__normal_iterator<const char*, std::__cxx11::basic_string<char> >]’

    std::regex_match(mimeTypeIt->get<std::string>(), mimeTypeMatch, MimeTypeRegex);

                                                                                ^

In file included from /usr/include/c++/7/regex:62:0,

                from /home/yq/share/src/mediasoup/demo/mediasoup-broadcaster-demo/deps/libmediasoupclient/src/ortc.cpp:8:

/usr/include/c++/7/bits/regex.h:2121:5: note: declared here

    regex_match(const basic_string<_Ch_type, _Ch_traits, _Ch_alloc>&&,

解决:

https://stackoverflow.com/questions/32164501/error-use-of-deleted-function-bool-regex-match-with-gcc-5-2-0

问题:

[ 77%] Linking CXX executable broadcaster

/usr/bin/ld: broadcaster: hidden symbol `SSLeay' in /home/yq/share/src/mediasoup/client/libwebrtc/src/out/mybuild-m79/obj/libwebrtc.a(crypto.o) is referenced by DSO

/usr/bin/ld: final link failed: Bad value

原因:

      SSLeay  在特定的ssl 版本中才有的函数,  经过对比发现,  openssl 头文件和库的版本不一致;

解决:

      该工程所依赖的openssl 的头文件和库文件都需要依赖 webrtc 项目中的 openssl项目;  具体依赖的库为 libcrypto.a  libssl.a;    头文件也在webrtc 里边有相关路径;    里边有32位版本和64位版本,  需要用到与编译系统一样的版本即可!

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 204,293评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,604评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 150,958评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,729评论 1 277
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,719评论 5 366
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,630评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,000评论 3 397
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,665评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,909评论 1 299
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,646评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,726评论 1 330
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,400评论 4 321
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,986评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,959评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,197评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 44,996评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,481评论 2 342