Ubuntu14.04下编译shadowsocks-qt5以支持chacha20-ietf-poly1305加密方式
前言
最近因为折腾ROS和ARDrone,在笔记本上装了Ubuntu14.04,无法Google很是头疼。由于我的shadowsocks服务提供商使用的是较新的chacha20-ietf-poly1305加密协议,而通过PPA源安装的shadowsocks-qt5大概是长时间没有更新,不支持该协议,于是需要从源码编译安装。
具体内容参考的是github上这个issue下的讨论 Add support for chacha20-ietf-poly1305 ,但是几个步骤走下来出了很多错误,因此把整个编译安装shadowsocks-qt5的步骤记录下来,供我以后参照,也供你参考。
编译步骤
安装 libsodium-dev和其他依赖项
Ubuntu14.04中并没有搜索到libsodium-dev,所以通过PPA源安装。
1 | sudo add-apt-repository ppa:chris-lea/libsodium |
安装其他依赖项
1 | sudo apt-get install libzbar-dev libqrencode-dev qtbase5-dev qt5-default qt5-qmake |
编译libbotan-2.x以供调用
1 | wget https://botan.randombit.net/releases/Botan-2.3.0.tgz |
注意,一定要运行ldconfig
刷新配置。
更新CMake版本
Ubuntu14.04 默认CMake版本为version 2.8,编译libQtShadowsocks库需要最低version 3.1,厦门通过PPA源更新至version 3.2,参考Ubuntu 14.04 更新cmake版本到3.2 。
1 | sudo add-apt-repository ppa:george-edison55/cmake-3.x |
安装g++-6 gcc-6以支持c++14
libQtShadowsocks的编译需要c++14支持,而Ubuntu14.04默认gcc g++不支持,因此需要安装更高版本的gcc g++,作者安装的是g++-6,gcc-6,步骤如下:
安装 gcc-6 g++-6
1 | sudo add-apt-repository ppa:ubuntu-toolchain-r/test |
添加gcc g++ 选项
1 | sudo update-alternatives –install /usr/bin/g++ g++ /usr/bin/g++-6 20 |
手动选择gcc g++ 版本
1 | sudo update-alternatives --config g++ |
查看gcc g++ 版本
1 | g++ --version |
安装Qt 5
编译需要用到Qt库,步骤如下:
下载,64位
1 | wget http://download.qt.io/official_releases/qt/5.7/5.7.0/qt-opensource-linux-x64-5.7.0.run |
安装
1 | chmod +x qt-opensource-linux-x64-5.7.0.run |
在~/.bashrc
中追加下面Qt5的bin和lib路径,默认Qt安装在/home/user/
下。
1 | PATH = /home/user/Qt/5.0/gcc_64/bin:PATH |
确保运行source ~/.bashrc
刷新配置。
编译libQtShadowsocks
经验告诉我,master分支的版本不太好使,作者使用stable分支完成了编译。
下载源码
1 | git clone https://github.com/shadowsocks/libQtShadowsocks.git |
修改CMakeLists.txt的第八行,将OFF改为ON
1 | 将 |
编译前记得看代码Merge,具体看Fix qToBigEndian compile error 。
即lib/encryptor.cpp
第141行,uint8_t和uint16_t的区别,我是在uint16_t下编译成功的。
1 | qToBigEndian(inLen, reinterpret_cast<uint16_t*>(&rawLength[0])); |
编译
1 | mkdir build |
编译安装shadowsocks-qt5
1 | git clone https://github.com/shadowsocks/shadowsocks-qt5 |
运行
在Terminal运行ss-qt5
还是ss-qt
,具体哪个忘记了了,就能弹出shadowsocks-qt5界面。
然后就是设置PAC代理的事情了。