maketool_deploylib.sh 2.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133
  1. #! /bin/bash
  2. qt_com=`arch`
  3. if [ $qt_com = "aarch64" ];then
  4. Qtgccdir='/usr/lib/aarch64-linux-gnu/qt5'
  5. QtPlatformdir=$Qtgccdir/plugins/platforms
  6. QtLibDir=/usr/lib/aarch64-linux-gnu/
  7. else
  8. Qtgccdir='/usr/lib/x86_64-linux-gnu/qt5'
  9. QtPlatformdir=$Qtgccdir/plugins/platforms
  10. QtLibDir=/usr/lib/x86_64-linux-gnu
  11. fi
  12. #echo $Qtgccdir
  13. if [ -d $Qtgccdir ]; then
  14. echo ""
  15. else
  16. echo "find qt gccdir in opt."
  17. Qtgccdir=''
  18. optfiles=`find /opt -name 'gcc_64'`
  19. for entry in $optfiles
  20. do
  21. if [ ${entry:0-6:6} == "gcc_64" ]; then
  22. if [ -d $entry ]; then
  23. Qtgccdir="$entry"
  24. fi
  25. fi
  26. done
  27. fi
  28. if [ ${#Qtgccdir} -lt 6 ]; then
  29. echo -e "\033[32m""not found gccdir.Please install qt ""\033[0m"
  30. exit 1
  31. fi
  32. ignore_lib_name=(
  33. libstdc++.so.*
  34. libm.so.*
  35. libgcc_s.so.*
  36. #libc.so.*
  37. #libpthread.so.*
  38. #libGL.so.*
  39. libz.so.*
  40. libc.so.*
  41. libgthread*
  42. libglib*
  43. libexpat*
  44. #libxcb*
  45. #libdl.so.*
  46. libxshmfence*
  47. libglapi.so.*
  48. libXext.so.*
  49. libXdamage.so.*
  50. libXfixes.so.*
  51. #libX11*
  52. libXxf86vm.so.*
  53. libdrm.so.*
  54. libpcre.so.*
  55. #libXau.so.*
  56. #libXdmcp.so.*
  57. )
  58. EXE="$1"
  59. PWD=`pwd`
  60. rm -rf app
  61. mkdir app
  62. cd app
  63. mkdir lib
  64. cd ..
  65. mkdir commonlib
  66. cd commonlib
  67. mkdir platforms
  68. cp $QtPlatformdir/libqxcb.so platforms
  69. cd platforms
  70. mkdir lib
  71. libfiles=`ldd libqxcb.so | awk '{ if(match($3,"^/"))printf("%s "),$3 }'`
  72. cp $libfiles $PWD/lib
  73. cd ..
  74. mkdir lib
  75. cp $QtLibDir/libQt5DBus.* $PWD/lib
  76. cp $QtLibDir/libQt5XcbQpa.* $PWD/lib
  77. rm -rf $PWD/platforms/lib
  78. cd platforms
  79. cd ..
  80. cd ..
  81. files=`ldd $EXE | awk '{ if(match($3,"^/"))printf("%s "),$3 }'`
  82. cp $files $PWD/app/lib
  83. cp $PWD/commonlib/lib/* $PWD/app/lib
  84. cp -r $PWD/commonlib/platforms $PWD/app
  85. cp $EXE $PWD/app
  86. for x in ${ignore_lib_name[@]}
  87. do
  88. rm -f $PWD/app/lib/${x}
  89. done
  90. rm -rf commonlib
  91. cd app
  92. patchelf --set-rpath '$ORIGIN/lib/' $EXE
  93. if [ "$?" != 0 ];then
  94. echo -e "\e[31m deploy.sh: patchelf $EXE faile, Ensure patchelf tool installed\e[0m"
  95. exit 1
  96. fi
  97. cd platforms
  98. patchelf --set-rpath '$ORIGIN/../lib/' libqxcb.so
  99. if [ "$?" != 0 ];then
  100. echo -e "\e[31m deploy.sh: patchelf $EXE faile, Ensure patchelf tool installed\e[0m"
  101. # exit 1
  102. fi
  103. cd ..
  104. cd ..
  105. cp -r app $PWD/deploy/
  106. xlib=`ls ./deploy/app/lib/lib*`
  107. for fileName in $xlib
  108. do
  109. if ! [[ $fileName == *".prl" ]]; then
  110. # echo "patch "$fileName
  111. patchelf --set-rpath '$ORIGIN' $fileName
  112. fi
  113. done
  114. rm -rf app