第一步:生成可執行文件,這個沒什么好說的,生成可執行文件的時候選擇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
現在可以將文件夾復制到需要運行的電腦上,需要給CXXtest和CXXtest.sh執行權限,然后執行./CXXtest.sh。