由於公司安排做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 等一系統。但是今天在...