64位CentOS7下編譯安裝nsis 2 46

2021-07-06 05:37:05 字數 2288 閱讀 2776

由於公司安排做openvpn的二次開發,所以需要搭建開發環境。官網檢視windows下的客戶端軟體,官方發布版是在linux下通過交叉編譯生成的安裝可執行檔案。nsis則是將linux下編譯生成的dll,exe檔案進行打包然後生成乙個可安裝檔案的工具。yum安裝行不通,google上也找不到rpm安裝包。只找到相應的原始碼包。所以只好自己編譯。

nsis-2.46-src.tar.bz2

(source) and 

nsis-2.46.zip (

zip package)兩個包。

2. 在/usr/local/下建立乙個nsis資料夾,用於編譯和安裝。

mv nsis-2.46-src.tar.bz2 /usr/local/nsis/

mv nsis-2.46.zip /usr/local/nsis/

3. cd /usr/local/nsis

tar -jxvf nsis-2.46-src.tar.bz2

unzip nsis-2.46.zip

4. 在解壓後的nsis-2.

46-src目錄下,有乙個install檔案,提供一些編譯方面的資訊,可供參考。

編譯需要依賴的軟體環境:

1. python版本1.6及以上;

2. scons 版本0.96.93及以上

3. c編譯器

針對自己linux環境進行相應軟體的安裝即可。

5. 編譯環境搭好後,即可開始編譯。

scons skipstubs=all skipplugins=all skiputils=all skipmisc=all nsis_config_const_data=no prefix=/usr/local/nsis/nsis-2.46    install-compiler

編譯的時候,可能報如下錯誤

source/script.cpp:6465:1:   required from here

source/util.h:128:59: error: 'close' was not declared in this scope, and no declarations were found by argument-dependent lookup at the point of instantiation [-fpermissive]

template void operator()(t& x) \

^source/util.h:145:1: note: in expansion of macro 'rm_define_freefunc'

rm_define_freefunc(close);

^in file included from source/script.cpp:49:0:

/usr/include/unistd.h:353:12: note: 'int close(int)' declared here, later in the translation unit

extern int close (int __fd);

錯誤原因是乙個模板在例項化時巨集展開乙個函式,但這個函式沒有事先宣告,找不到原型。所以在script.cpp中,

#include "util.h"前面新增如下**:

__begin_decls

extern int close (int __fd);

__end_decls

6. nsis是32位版本的,需要32位版本的libstdc++庫

yum upgrade libstdc++

yum install libstdc++.i686

yum upgrade zlib

yum install zlib.i686

7. 編譯32位程式,編譯器可能錯誤使用64位鏈結器。修改編譯指令碼,指定用32位ld

vim   scons/config/gnu

在### makensis environment下面相應位置追加環境變數

8.將/usr/local/nsis/nsis-2.46/hin加入path環境變數。第一次執行出現以下錯誤:

error: opening stub "/usr/local/nsis/nsis-2.34/share/nsis/stubs/zlib

error initalizing cexebuild: error setting default stub

解決此問題:

在/usr/local/nsis/nsis-2.46目錄mkdir share,然後在share目錄下執行ln -s /usr/local/nsis/nsis-2.46    nsis建立軟鏈結。ok,大功告成。執行makensis,列印幫助資訊,表示安裝正確。

Centos7下編譯安裝Nginx

安裝前的的準備 1.安裝gcc g 開發類庫是否裝好 ububtu平台編譯環境可以使用以下指令 apt get install build essential apt get install libtool centos平台編譯環境使用如下指令 yum y install gcc automake ...

centos7下編譯安裝apache

一 準備軟體 將上述軟體上傳到 usr src下 二 環境檢查 檢查gcc是否已安裝 gcc v 安裝gcc yum y install gcc gcc c make 安裝完後檢查 gcc v 三 安裝 1 安裝apr tar zxf apr 1.7.0.tar.gz cd apr 1.7.0 co...

VM安裝Centos7 報錯無法執行64位操作

本人電腦 thinkpad t410 安裝系統 windows 8.1 在vm 版本10.0 中安裝 centos7 64 位系統,出現如下錯誤 之前vm虛擬機器已經成功安裝過windows xp,windows 7 windows 8 ubuntu14 windows2000 等一系統。但是今天在...