Tencent/puerts

linux下libnode.so默认链接libstdc++.so,导致libpuerts.so加载找不到符号

Closed this issue · 1 comments

detail | 详细描述

报错
undefined symbol: ZN4node22InitializeNodeWithArgsEPNSt3__16vectorINS0_12basic_stringIcNS0_11char_traitsIcEENS0_9allocatorIcEEEENS5_IS7_EEEESA_SA

查找到libnode.so相关符号为
0000000000b9bdc0 T ZN4node22InitializeNodeWithArgsEPSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS6_EES9_S9

这是因为我们统一指定链接libc++.so(参数-stdlib=libc++所致)

解决办法1:linux下我们不加-stdlib=libc++参数
解决办法2:让nodejs链接libc++.so,这没找到官方方法,不过可能ue只能用这方案
后续 如果ue只能用libc++.so才试试以上2的方式,目前先用1解决unity的问题。

附上其它一些有用的信息,linux下打开-stdlib=libc++后,往往会碰到标准c++头文件,比如vector, memory等找不到的报错。需要安装如下几个库

sudo apt-get update
sudo apt-get install clang
sudo apt-get install build-essential
sudo apt-get install libc++-dev
sudo apt-get install libc++abi-dev