webrtc.node: undefined symbol: _ZN3rtc10DIGEST_MD5E

webrtc.node: undefined symbol: _ZN3rtc10DIGEST_MD5E
编译webrtc的debug版本遇到这个错误

 

undefined symbol问题的查找、定位与解决方法

https://blog.csdn.net/buknow/article/details/96130049

 

ild$ ldd -r  ./Debug/obj.target/webrtc.node 
    linux-vdso.so.1 (0x00007ffd1a1e4000)
    liblog4cxx.so.10 => /usr/lib/x86_64-linux-gnu/liblog4cxx.so.10 (0x00007f9a780d9000)
    libboost_thread.so.1.65.1 => /usr/lib/x86_64-linux-gnu/libboost_thread.so.1.65.1 (0x00007f9a77eb4000)
    libboost_system.so.1.65.1 => /usr/lib/x86_64-linux-gnu/libboost_system.so.1.65.1 (0x00007f9a77caf000)
    libnice.so.10 => not found
    libstdc++.so.6 => /usr/lib/x86_64-linux-gnu/libstdc++.so.6 (0x00007f9a77926000)
    libm.so.6 => /lib/x86_64-linux-gnu/libm.so.6 (0x00007f9a77588000)
    libgcc_s.so.1 => /lib/x86_64-linux-gnu/libgcc_s.so.1 (0x00007f9a77370000)
    libpthread.so.0 => /lib/x86_64-linux-gnu/libpthread.so.0 (0x00007f9a77151000)
    libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007f9a76d60000)
    /lib64/ld-linux-x86-64.so.2 (0x00007f9a79312000)
    libapr-1.so.0 => /usr/lib/x86_64-linux-gnu/libapr-1.so.0 (0x00007f9a76b2b000)
    libaprutil-1.so.0 => /usr/lib/x86_64-linux-gnu/libaprutil-1.so.0 (0x00007f9a76900000)
    librt.so.1 => /lib/x86_64-linux-gnu/librt.so.1 (0x00007f9a766f8000)
    libuuid.so.1 => /lib/x86_64-linux-gnu/libuuid.so.1 (0x00007f9a764f1000)
    libdl.so.2 => /lib/x86_64-linux-gnu/libdl.so.2 (0x00007f9a762ed000)
    libcrypt.so.1 => /lib/x86_64-linux-gnu/libcrypt.so.1 (0x00007f9a760b5000)
    libexpat.so.1 => /lib/x86_64-linux-gnu/libexpat.so.1 (0x00007f9a75e83000)
undefined symbol: _ZN3rtc10DIGEST_MD5E    (./Debug/obj.target/webrtc.node)
undefined symbol: _ZN3rtc12DIGEST_SHA_1E    (./Debug/obj.target/webrtc.node)
undefined symbol: nice_candidate_free    (./Debug/obj.target/webrtc.node)
undefined symbol: _ZN2v86String9Utf8ValueC1ENS_5LocalINS_5ValueEEE    (./Debug/obj.target/webrtc.node)
undefined symbol: _ZN2v816FunctionTemplate11GetFunctionEv    (./Debug/obj.target/webrtc.node)

c++filt  _ZN3rtc10DIGEST_MD5E

rtc::DIGEST_MD5

 

根据网上查到的资料,确认一下链接的静态库顺序是否正确。直接在第三方源码中全局搜索报错的字符串“DIGEST_MD5”,发现有两处cpp文件中存在,一处是声明定义的,另一处是调用的。

 

 

/src$ grep  DIGEST_MD5  ./  -rs
匹配到二进制文件 ./out/obj/webrtc/p2p/rtc_p2p/stun.o
匹配到二进制文件 ./out/obj/webrtc/p2p/rtc_p2p/turnserver.o
匹配到二进制文件 ./out/obj/webrtc/p2p/librtc_p2p.a

/webrtc/base/openssldigest.cc:    *algorithm = DIGEST_MD5;
./webrtc/p2p/base/turnserver.cc:  nonce += rtc::ComputeHmac(rtc::DIGEST_MD5, nonce_key_, input);
./webrtc/p2p/base/turnserver.cc:      rtc::DIGEST_MD5, nonce_key_, std::string(p, sizeof(then)))) {
./webrtc/p2p/base/stun.cc:      rtc::DIGEST_MD5, input.c_str(), input.size(),
test@test-virtual-machine:~/code/owt-server/third_party/webrtc/src$ 

在turnserver.cc和stun.cc文件中添加如下

const char DIGEST_MD5[]     = "md5";

去掉 rtc::DIGEST_MD5前面的rtc::,   改成DIGEST_MD5


 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值