提交 17580bb2 编写于 作者: C chenzhiyu

fix the get_ver of musl libc

上级 72be50ca
......@@ -200,10 +200,16 @@ def pre_load(dso_name):
load_dso(dso_path)
def get_glibc_ver():
return "musl_" + run_shell_command("ldd 2>&1 | awk '/Version/{print $NF}'")
#return run_shell_command("ldd --version | awk '/ldd/{print $NF}'")
def get_libc_ver():
ldd_glibc = run_shell_command("ldd --version | awk '/ldd/{print $NF}'")
if ldd_glibc is not None:
return ("glibc", ldd_glibc)
ldd_musl = run_shell_command("ldd 2>&1 | awk '/Version/{print $NF}'")
if ldd_musl is not None:
return ("musl", ldd_musl)
return (None, None)
def less_than_ver(a, b):
if a is None or b is None:
......@@ -227,13 +233,14 @@ def less_than_ver(a, b):
# For paddle, the problem is that 'libgomp' is a DSO with static TLS, and it is loaded after 14 DSOs.
# So, here is a tricky way to solve the problem by pre load 'libgomp' before 'core_avx.so'.
# The final solution is to upgrade glibc to > 2.22 on the target system.
if platform.system().lower() == 'linux' and False and less_than_ver(get_glibc_ver(),
'2.23'):
try:
pre_load('libgomp')
except Exception as e:
# NOTE(zhiqiu): do not abort if failed, since it may success when import core_avx.so
sys.stderr.write('Error: Can not preload libgomp.so')
if platform.system().lower() == 'linux':
libc_type, libc_ver = get_libc_ver()
if libc_type == 'glibc' and less_than_ver(libc_ver,'2.23'):
try:
pre_load('libgomp')
except Exception as e:
# NOTE(zhiqiu): do not abort if failed, since it may success when import core_avx.so
sys.stderr.write('Error: Can not preload libgomp.so')
load_noavx = False
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册