GreatSQL社区

搜索

[已解决] mysql shell 编译后 各种 xx.so 文件依赖问题

201 1 2024-3-8 15:58
  1. [root@greatsqlsh_build7 bin]# ldd mysqlsh
  2.         linux-vdso.so.1 =>  (0x00007ffff7ffa000)
  3.         libpthread.so.0 => /lib64/libpthread.so.0 (0x00007ffff7bbf000)
  4.         libdl.so.2 => /lib64/libdl.so.2 (0x00007ffff79bb000)
  5.         libssl.so.10 => /lib64/libssl.so.10 (0x00007ffff7749000)
  6.         libcrypto.so.10 => /lib64/libcrypto.so.10 (0x00007ffff72e6000)
  7.         libresolv.so.2 => /lib64/libresolv.so.2 (0x00007ffff70cc000)
  8.         librt.so.1 => /lib64/librt.so.1 (0x00007ffff6ec4000)
  9.         libprotobuf.so.30 => /opt/greatsql-shell-8.0.32-25-Linux-el7-glibc2.17-x86_64/bin/./../lib/mysqlsh/libprotobuf.so.30 (0x00007ffff6c01000)
  10.         libssh.so.4 => /opt/greatsql-shell-8.0.32-25-Linux-el7-glibc2.17-x86_64/bin/./../lib/mysqlsh/libssh.so.4 (0x00007ffff7f44000)
  11.         libutil.so.1 => /lib64/libutil.so.1 (0x00007ffff69fe000)
  12.         libcurl.so.4 => /lib64/libcurl.so.4 (0x00007ffff6794000)
  13.         libnode.so.93 => /lib64/libnode.so.93 (0x00007ffff360d000)
  14.         libpython3.8.so.rh-python38-1.0 => /opt/greatsql-shell-8.0.32-25-Linux-el7-glibc2.17-x86_64/bin/./../lib/mysqlsh/libpython3.8.so.rh-python38-1.0 (0x00007ffff3251000)
  15.         libm.so.6 => /lib64/libm.so.6 (0x00007ffff2f4f000)
  16.         libantlr4-runtime.so.4.10 => /opt/greatsql-shell-8.0.32-25-Linux-el7-glibc2.17-x86_64/bin/./../lib/mysqlsh/libantlr4-runtime.so.4.10 (0x00007ffff7e16000)
  17.         libstdc++.so.6 => /lib64/libstdc++.so.6 (0x00007ffff2c47000)
  18.         libgcc_s.so.1 => /lib64/libgcc_s.so.1 (0x00007ffff2a31000)
  19.         libc.so.6 => /lib64/libc.so.6 (0x00007ffff2663000)
  20.         /lib64/ld-linux-x86-64.so.2 (0x00007ffff7ddb000)
  21.         libgssapi_krb5.so.2 => /lib64/libgssapi_krb5.so.2 (0x00007ffff2416000)
  22.         libkrb5.so.3 => /lib64/libkrb5.so.3 (0x00007ffff212d000)
  23.         libcom_err.so.2 => /lib64/libcom_err.so.2 (0x00007ffff1f29000)
  24.         libk5crypto.so.3 => /lib64/libk5crypto.so.3 (0x00007ffff1cf6000)
  25.         libz.so.1 => /lib64/libz.so.1 (0x00007ffff1ae0000)
  26.         libidn.so.11 => /lib64/libidn.so.11 (0x00007ffff18ad000)
  27.         libssh2.so.1 => /lib64/libssh2.so.1 (0x00007ffff1680000)
  28.         libssl3.so => /lib64/libssl3.so (0x00007ffff141b000)
  29.         libsmime3.so => /lib64/libsmime3.so (0x00007ffff11f3000)
  30.         libnss3.so => /lib64/libnss3.so (0x00007ffff0eb9000)
  31.         libnssutil3.so => /lib64/libnssutil3.so (0x00007ffff0c88000)
  32.         libplds4.so => /lib64/libplds4.so (0x00007ffff0a84000)
  33.         libplc4.so => /lib64/libplc4.so (0x00007ffff087f000)
  34.         libnspr4.so => /lib64/libnspr4.so (0x00007ffff0640000)
  35.         liblber-2.4.so.2 => /lib64/liblber-2.4.so.2 (0x00007ffff0431000)
  36.         libldap-2.4.so.2 => /lib64/libldap-2.4.so.2 (0x00007ffff01dc000)
  37.         libuv.so.1 => /lib64/libuv.so.1 (0x00007fffeffae000)
  38.         libbrotlidec.so.1 => /lib64/libbrotlidec.so.1 (0x00007fffefda2000)
  39.         libbrotlienc.so.1 => /lib64/libbrotlienc.so.1 (0x00007fffefb0f000)
  40.         libcrypto.so.1.1 => /lib64/libcrypto.so.1.1 (0x00007fffef62a000)
  41.         libssl.so.1.1 => /lib64/libssl.so.1.1 (0x00007fffef39a000)
  42.         libcrypt.so.1 => /lib64/libcrypt.so.1 (0x00007fffef163000)
  43.         libuuid.so.1 => /lib64/libuuid.so.1 (0x00007fffeef5e000)
  44.         libkrb5support.so.0 => /lib64/libkrb5support.so.0 (0x00007fffeed4e000)
  45.         libkeyutils.so.1 => /lib64/libkeyutils.so.1 (0x00007fffeeb4a000)
  46.         libsasl2.so.3 => /lib64/libsasl2.so.3 (0x00007fffee92d000)
  47.         libbrotlicommon.so.1 => /lib64/libbrotlicommon.so.1 (0x00007fffee70c000)
  48.         libfreebl3.so => /lib64/libfreebl3.so (0x00007fffee509000)
  49.         libselinux.so.1 => /lib64/libselinux.so.1 (0x00007fffee2e2000)
  50.         libpcre.so.1 => /lib64/libpcre.so.1 (0x00007fffee080000)
复制代码


虚拟机内编译后 查看依赖如上,
程序本地的依赖目录里的文件如下:
  1. <blockquote>[root@greatsqlsh_build7 mysqlsh]# pwd
复制代码
请教问题:
将程序 打包成tar文件后 拷贝到其他服务器执行,提示 缺少各种 so文件.
怎样 可以将这些so 在编译的时候 自动 的拷贝到 /opt/greatsql-shell-8.0.32-25-Linux-el7-glibc2.17-x86_64/lib/mysqlsh 程序自己的lib库里?








全部回复(1)
yejr 2024-3-8 17:37:25
一些系统层面共同的依赖库,像glibc这种好像没办法,只能依赖所在操作系统。

其他的一些依赖,例如 libprotobuf.so.30、libantlr4-runtime.so.4.10这种就可以放在自己的目录下,并通过patchelf修改。

可参考这篇文章中提到的patchelf做法:https://mp.weixin.qq.com/s/o7JDOaQl-xJI-Bod5Vu_1Q ,文中 "2.3 利用patchelf修改mysqlsh二进制文件" 这部分内容。
earl86

6

主题

0

博客

26

贡献

新手上路

Rank: 1

积分
44

助人为乐(铜)

合作电话:010-64087828

社区邮箱:greatsql@greatdb.com

社区公众号
社区小助手
QQ群
GMT+8, 2024-5-17 08:39 , Processed in 0.014368 second(s), 8 queries , Redis On.
快速回复 返回顶部 返回列表