第一步:生成可执行文件,这个没什么好说的,生成可执行文件的时候选择Release版本。还有一个就是在*.pro文件中添加上一句代码:
QMAKE_LFLAGS += -no-pie
不加这句代码的话,生成的可执行文件不能双击运行,终端是可以启动的但是个人觉得并不方便。
第二步:在合适的位置新建一个文件夹,比如我是在/home/lxb/callipers,在将qt生成的可执行文件拷贝过来放到该目录下。(qt生成的编译生成的文件目录:/home/lxb/QTprofile/build-CXXtest-Desktop_Qt_5_12_5_GCC_64bit-Release),我的可执行文件是在这个目录下面的名字为CXXtest的文件。我们把CXXtest拷贝/home/lxb/callipers里。在文件夹里新建一个lib文件夹用了装依赖的链接库。在callipers文件夹下新建脚本文件config.sh内容如下:
#!/bin/sh exe="CXXtest" #发布的程序名称 这是我的可执行程序的名字 des="/home/lxb/callipers/lib/" #这个是用来存放依赖库的位置 deplist=$(ldd $exe | awk ‘{if (match($3,"/")){ printf("%s "),$3 } }‘) cp $deplist $des
修改下文件的权限:
sudo chmod 777 config.sh
执行脚本:
./config.sh
这样所有依赖的库都被复制到了lib目录下。
第三步:现在需要将程序和依赖库链接起来,在callipers目录下新建文件CXXtest.sh,这里注意新建的文件的名字一定要和程序的名字一样。文件的内容如下:
#!/bin/sh appname=`basename $0 | sed s,\.sh$,,` dirname=`dirname $0` tmp="${dirname#?}" if [ "${dirname%$tmp}" != "/" ]; then dirname=$PWD/$dirname fi LD_LIBRARY_PATH=$dirname export LD_LIBRARY_PATH $dirname/$appname "$@"
给文件添加一下执行权限并执行:
sudo chmod +x CXXtest.sh ./CXXtest.sh
现在可以将文件夹复制到需要运行的电脑上了。