路由器 – 技术小站 http://iytc.net/wordpress 随意记录 Sun, 24 Dec 2023 08:29:16 +0000 zh-CN hourly 1 https://wordpress.org/?v=5.0.3 HK1 BOX X3刷OpenWrt http://iytc.net/wordpress/?p=6925 http://iytc.net/wordpress/?p=6925#comments Mon, 20 Nov 2023 09:49:45 +0000 http://iytc.net/wordpress/?p=6925 网上淘了一个HDMI接口损坏的HK1 BOX X3,S905X3芯片,¥50,可以刷机当旁路路由器用,性能秒杀N1

 

X3和X4对比

一模两样

去这里下载固件

https://www.right.com.cn/forum/thread-4076037-1-1.html

下载后需解压,我刷的是这个固件

openwrt_s905x3_multi_R23.11.09_k6.1.62-flippy-86+.img

用win32diskimager写入U盘

修改U盘根目录下的uEnv.txt文件:

再把U盘插入盒子的USB接口

找根牙签插进耳机孔按住复位键, 再插入电源 ,大概十秒钟后放开

稍等一段时间,用网线连接计算机和盒子,然后网页访问192.168.1.1即可,用户名root,密码password

将固件写入emmc:

ssh登录盒子,执行如下命令

cd  /root   &&   ./install-to-emmc.sh

会让你选择盒子类型,选HK1 BOX(53),然后还有文件类型选择(ext4)等,刷好后拔出U盘,断电重启即可

]]>
http://iytc.net/wordpress/?feed=rss2&p=6925 1
高性价比带USB3.0的WIFI6路由器RAX3000M http://iytc.net/wordpress/?p=6857 http://iytc.net/wordpress/?p=6857#comments Sat, 11 Nov 2023 02:51:34 +0000 http://iytc.net/wordpress/?p=6857 好久没玩路由器了,在网上逛逛,发现了这款中国移动的WIFI6定制路由器,带512M内存和USB3.0,与newifi3的配置差不多,但无线应该比newifi3强一大截,目前已经可以刷机。咸鱼售价150左右。

外观小巧

接口够用

参数配置:

这个配置是nand的普通版本,还有emmc的算力版本,固件及刷机方式不同

推荐lean同学的刷机固件:

nand版:

https://www.right.com.cn/forum/thread-8303809-1-1.html

emmc版:

https://www.right.com.cn/forum/thread-8306999-1-1.html

 

散热问题:

路由器上部封闭,散热主要靠底部被动散热,目前室温28度左右,竖着摆放温度为68度(空载运行一晚上),加了一个USB的外部风扇对着底部吹,温度降到44度:

usb风扇8元,路由器放上去即可:

如果嫌风扇噪声大,可以几块钱买个调速模块,在噪声和温度之间寻找平衡

无线信号还是比较强劲,同一位置5G信号强度要好于K3

5G无线连接后USB3.0读取速度:

其他信息:

配置文件的全备份及还原:

用openwrt中的备份和还原只会针对配置文件的修改,如果你安装了新的ipk或修改了其他非etc目录的文件,备份和恢复将不起作用,正确的全备份和恢复是针对/overlay目录进行

备份所有修改数据:

tar zcvf /tmp/backup.tar.gz /overlay/upper

恢复所有用户数据

tar x -zvC / -f /tmp/backup.tar.gz

 

补充:

散热用外置的USB风扇已经差不多了,如果嫌碍眼,可以考虑内置小风扇

先买一个5v供电的侧吹3010(30*30*10mm)风扇,然后拆机

https://www.bilibili.com/video/BV1294y1Y7D5

注意标签下有两颗螺丝。

放些散热片和小风扇,小风扇的供电可以从USB口取,可以内部焊接或把电源线引出,接外面的USB插头,插入USB口即可,不用焊接。

机器倒置摆放更利于散热

空载运行20分钟的温度为50度(室温26度)

 

另此固件支持IPV6,你需要先在光猫开启IPV6桥接,路由器PPPOE拨号,登录光猫(地址)管理地址(我的是192.168.3.1,一般是192.168.1.1,可连接光猫wifi后进行修改,以免和路由器地址冲突,计算机要通过路由器访问光猫,可以为wan口增加一个同网段IP--用命令“ifconfig eth1 192.168.3.2 netmask 255.255.255.0 ”):

http://192.168.3.1:8080/main.html

将INTERNET_B连接的连接模式选“桥接”,IP模式选择“IPV4&IPV6”,路由器固件默认设置即可:

然后用ping命令查看是否成功:

IPV6目前主要的用处是使路由器有公网的IPV6地址,可以不用内网穿透,利用ddns和socat的端口映射来实现路由器的远程访问。

对于内网设备来说,开启IPV6可能会导致一些网站访问问题,你可以禁止内网设备的IPV6地址分配和解析:

禁止IPV6解析

在LAN接口IPV6地址分配

 

散热方案更新:

还是采用USB外置风扇,在USB风扇的负极串接一个50度的温控开关,将其贴在路由器的散热铁片上,超过温度则自动打开风扇,低于温度自动关闭:

实测CPU温度曲线:

CPU温度在53-68之间变化,上升时间(风扇关闭时间)30分钟左右,下降时间(风扇开启时间)6分钟左右。即实现路由器的温控,又延长了风扇寿命并省电。

将统计时间加长,会发现到了晚上温度上升的速率变缓,这是因为晚上气温相对白天较低:

]]>
http://iytc.net/wordpress/?feed=rss2&p=6857 9
京东云无线宝试用、拆机及添加TTL http://iytc.net/wordpress/?p=6019 http://iytc.net/wordpress/?p=6019#comments Mon, 27 Jul 2020 03:10:56 +0000 http://iytc.net/wordpress/?p=6019 一、试用

入手了一台京东云无线宝128GB存储 尊享版(购买链接https://u.jd.com/ugIg3cY

还有32G尊享版(https://u.jd.com/u4IYI11)及64G加速版(https://u.jd.com/uBI2RhN),目前有预存优惠活动。

 

到手后,USB加了一个闲置的320G HDD硬盘,内置和外置都设置为边缘计算。

注意:128G版本可以不插硬盘,缺省运行A插件

网络环境为广东电信200Mbps下行,40Mbps上行,一级路由为K3,无线宝作为二级路由接入,在K3上启动upnp,开启DMZ指向无线宝的IP地址

 

按照说明,缺省运行的为A插件,可以在APP中“意见反馈”页面申请A+B插件,月底推送插件(目前只支持128尊享版切换插件)。

接入网络大概30个小时后,产生第一天的京豆收入64,第二天74

一天的流量大概80G左右,大部分为上传流量

第三天流量120多G,全天流量比较平稳,京豆收入135,折合人民币1.35元

29日推送A+B插件,据说比A插件高很多,要求联通/电信宽带、有公网地址,到时看看效果

 

二、拆机

撕开底座上两个胶条,会有3个螺丝,拧下螺丝

撬开底座,这一步比较困难,我是先用镊子把外壳顶开,再用撬棍撬开:

打开底盖后,再拧下4颗螺丝,并拔下下图中的插头,就可以拔出底板

三、接TTL

找到TTL位置,由于空间有限,我没有用插针,而是直接焊上去:

TTL线可以从上面板引出:

接上TTL模块,可以用普通USB转TTL线(接3根线,不要接电源线),我直接用了TTL蓝牙模块(接4根线,蓝牙模块由TTL供电),注意TTL线供电电压为3.3V

计算机搜索配对蓝牙模块,然后用软件打开蓝牙对应的串口(在设备管理器中找)即可

波特率设置为115200

FLASH分区信息

如果按住复位键进行重启,设备会进入tftp自动升级状态,服务器地址为10.10.10.10,加载文件名HaiRecovery.himg

 

]]>
http://iytc.net/wordpress/?feed=rss2&p=6019 6
可赚京豆的京东云无线宝路由器及其固件分析 http://iytc.net/wordpress/?p=5994 http://iytc.net/wordpress/?p=5994#comments Wed, 22 Jul 2020 08:45:53 +0000 http://iytc.net/wordpress/?p=5994 京东云无线宝路由器

内置芯片方案:MT7621A + MT7603EN + MT7615N,和K2P类似,512MB RAM、32MB ROM ,自带32G/64G/128G emmc内部存储(官方号称寿命17年)。支持802.11ac wave2协议,MU-MIMO技术,双频并发速度最高2100Mbps(300Mbps+1733Mbps),系统固件基于OpenWRT开发。

有三个规格:
轻NAS网盘 远程下载 128GB存储 尊享版
——————————————
京东价: ¥399.00
抢购链接: https://u.jd.com/ugIg3cY

轻NAS网盘 远程下载 32GB存储 尊享版
——————————————
京东价: ¥299.00
抢购链接: https://u.jd.com/u4IYI11

64G加速版
——————————————
京东价: ¥209.00
抢购链接: https://u.jd.com/uBI2RhN

三个版本的区别如下:

根据目前大家反馈的收益情况,一天大概在100积分左右,折换成人民币1元,因此如果按目前收益,回本在一年左右

固件目录结构:

web管理的前端采用d2-admin(https://github.com/d2-projects/d2-admin),后端采用nginx+lua


前端代码在www目录,js代码占了绝大部分:

后端配置文件/etc/nginx/nginx.conf及/etc/nginx/conf.d目录:

后端调用url路径为/api/*,配置如下:



主页面:

固件中的lua文件在/usr/lib/lua目录,不是以源码格式提供,而是进行了编译:

Lua有一种预编译机制,能够把文本代码预编译成Bytecode/Opcode 提高解析、执行速度,降低内存占用

反编译参考:
https://blog.ihipop.info/2018/05/5110.html
https://github.com/HandsomeYingyan/luadec-openwrt
编译过程:

#安装依赖
sudo apt install libncurses-dev libreadline-dev
#获得luadec源码
git clone https://github.com/viruscamp/luadec
cd luadec
git submodule update --init lua-5.1
#打补丁
ref=master
patch_dir=patches.$ref
mkdir $patch_dir && cd $patch_dir
#如下命令需要grep支持pcre正则,如果不支持,请自己手动处理把。 
patchs=$(curl -sSL -H 'Accept: application/vnd.github.v3+json' 'https://api.github.com/repos/openwrt/openwrt/contents/package/utils/lua/patches?ref='"$ref" |grep -oP 'name\"\s*:\s*\".*\.patch' |grep -oP '\d+.*\.patch')
#下载补丁文件
for p in $patchs;do  
wget 'https://github.com/openwrt-mirror/openwrt/raw/'"$ref"'/package/utils/lua/patches/'${p}  -O $p; 
done
cd ../lua-5.1
#打上补丁
#----------------------------------
打补丁后需修改lua-5.1/src/Makefile
#USE_READLINE=1
 +PKG_VERSION = 5.1.5
 
  -CFLAGS= -O2 -Wall $(MYCFLAGS)
  +CFLAGS= -fPIC -O2 -Wall $(MYCFLAGS)
#---------------------------------
for i in ../${patch_dir}/*.patch; do patch -p1 <$i ; done
make linux
export LD_LIBRARY_PATH=`pwd`/src/
cd ../luadec
make LUAVER=5.1

按上述方法编译出来的luadec【点此下载】可以反汇编其他openwrt固件(dreambox)的汇编文件,但是反汇编此固件失败,提示:
./luadec: guide.lua: bad code in precompiled chunk

。。。未完待续

]]>
http://iytc.net/wordpress/?feed=rss2&p=5994 1
3元解决斐讯N1盒子的开关机问题 http://iytc.net/wordpress/?p=5855 http://iytc.net/wordpress/?p=5855#comments Wed, 25 Mar 2020 10:17:41 +0000 http://iytc.net/wordpress/?p=5855 N1刷了当电视盒子用,用山寨小米遥控可以控制
N1

小米遥控

但在使用中发现一些问题,比如有时关机后遥控器无法开机、有时关机变成重启

为彻底解决此问题,用了一个5V的继电器,通过电视机的USB插口来控制N1的电源,当电视机开机时,USB上电,继电器导通,自动接通N1电源,电视机关机时,USB断电,自动断开N1电源

拼多多或淘宝上3元一个包邮的5V继电器

步骤:
1、找一根废弃的USB线剪断,里面的红色线接继电器模块的DC+,黑色线接继电器模块的DC-

2、将N1的电源线拨开,将红色线剪断,然后两头分别接继电器模块的NO和COM

3、将继电器模块的DC+和IN口用一根电线短接

4、USB线插入电视机USB接口,N1电源线插入N1电源接口

搞定!

实现效果:
电视开机,N1自动开机,电视关机,N1自动关机。

另外,这样改造后,可以完全用手机充当遥控器而不需要蓝牙遥控器,只需在手机上安装悟空遥控器然后推送给N1安装即可

]]>
http://iytc.net/wordpress/?feed=rss2&p=5855 5
路由器WEB安全实战-漏洞注入 http://iytc.net/wordpress/?p=5188 http://iytc.net/wordpress/?p=5188#comments Mon, 08 Apr 2019 07:49:37 +0000 http://iytc.net/wordpress/?p=5188 一、常用的WEB服务端注入
一般来说,WEB注入的对象是网站,常用的是SQL注入和代码注入。其本质是把用户输入的数据当做代码来执行,主要原因是设计时忽略了数据检查或违背了数据与代码分离原则,其发生的两个条件:
1、用户可以控制数据输入;
2、用户输入的数据可以拼接代码,把数据当做代码执行了。

【SQL注入】
$username = $_POST['username'];
$sql = "select * from usertable where username="."'".$username."'"

正常情况下用户输入 ‘Tom’ ,sql为
"select * from usertable where username='Tom'";
但如果用户输入 “Tom' ; drop table usertable--”,sql如下:
"select * from usertable where username='Tom';drop table usertable--";
如果我们的服务端代码,数据库权限没做任何处理,那么结果就是导致数据库表单被删除。
防御SQL注入的手段有:输入数据合法性检测、使用预编译语句、使用安全函数

【代码注入】
代码注入与命令注入都是由一些不安全函数或方法引起的如:eval()、system()
$var = 'varname';
$k = $_GET['tag'];
eval("/$var = $k;");

攻击者可以通过下面Payload实施代码注入:
/index.php?tag=1;phpinfo()
又比如 system()这个函数,可以通过代码注入导致命令注入
$error =system('cat '.$_GET['page_id'],$return_var);
echo $error;

攻击者通过index.php?page_id=loquesea;ls利用system函数执行自己想要的系统命令。

防御对抗代码注入,命令注入,需要禁用一些像eval(),system()等可以执行系统命令的函数,必须要用就需要对用户输入的数据进行严密的检查。

二、路由器WEB注入
路由器WEB注入与上面的代码注入原理类似,要进行注入,首先要找到注入点,我们需要先找到这些不安全的函数调用

基于openwrt路由器的WEB服务一般用lua语言进行控制,不安全的函数有luci.sys.call、luci.util.exec、os.execute等,通过这些函数,lua语言可以直接调用系统执行任何命令

我们首先需要搜索所有调用这些函数的点

然后需要对这些调用点进行逐个分析,先排除那些没有参数传入的点,对有参数传入的查看是否有完备的检查
比如上面红框处的Parent_ctrl_plt.lua 有一个luci.sys.call(cmd)的带参数的调用,我们看看它的源码:

cmd的参数来源于字符拼接,传入的拼接参数是源MAC地址,而且源码中没有对源MAC地址进行合法性检测,因此可以利用此漏洞来执行任何代码
漏洞利用参考:
https://www.right.com.cn/forum/thread-318971-1-1.html

修复此漏洞的方法,就是对源MAC地址做合法性检测

怎么样,寻找WEB漏洞就是这么简单!

颤抖吧,码农们!你们就是薄冰上的行者,稍有不慎就会跌入深渊,一起共勉吧!

]]>
http://iytc.net/wordpress/?feed=rss2&p=5188 13
路由器DDNS动态域名解析教程 http://iytc.net/wordpress/?p=5030 http://iytc.net/wordpress/?p=5030#comments Tue, 15 Jan 2019 12:22:58 +0000 http://iytc.net/wordpress/?p=5030 【路由器实现远程访问的方法】
1、如果你的路由器有公网IP,可以用ddns来实现远程访问
2、如果你的路由器没有公网IP,可以用frp进行内网穿透来实现远程访问

判断是否是公网IP的方法:
1)查看路由器状态页面,记录下路由器获得的IP地址

2)访问百度,搜索"ip",会显示你的ip地址

比较上面两个ip地址,如果一致,则表示是公网IP,如果不一致,则是私网IP

【ddns使用】
我们以“公云”为例来介绍ddns使用过程
1、申请ddns账号
访问网站:
http://www.pubyun.com/
点击首页的注册,填入相关信息:

注册后,进入邮箱点击链接激活账号,并验证手机

2、创建动态域名
登陆注册的公云账号,创建一个动态域名

3、路由器设置
进入路由器,设置ddns

再打开远程管理

然后你就可以通过动态域名加端口号来访问和管理你的路由器
比如上例中可通过如下网址来远程访问路由器
12

【frp使用】
如果你的路由器没有公网IP,可以用frp进行内网穿透来实现远程访问
frp的使用方法可以参考:
12

]]>
http://iytc.net/wordpress/?feed=rss2&p=5030 21
斐讯官改悟空M1及WIFI插座DC1控制说明 http://iytc.net/wordpress/?p=4925 http://iytc.net/wordpress/?p=4925#comments Fri, 21 Dec 2018 23:36:38 +0000 http://www.iytc.net/wordpress/?p=4925 由于斐讯服务器陆续关闭,通过APP已经无法控制斐讯的智能设备,比如M1和DC1,因此在最新斐讯官改中集成了这些智能设备的控制,本文对其使用进行说明

1、首次启用注意事项
在启用前,先确保你的M1或DC1正确连接上了WIFI(通过手机APP来配置)
在终端管理中应该可以看到设备:

首次启用先打开官改WEB页面的控制开关,然后复位(断电复位)一次M1或DC1即可。

首次启用时会自动对官方服务器地址进行重定向,具体修改内容是在hosts文件中自动添加记录,将官方服务器地址定向到路由器

需注意事项:
1)由于智能设备会缓存dns,因此在首次启用后需重启一次M1或DC1

2)官改路由器必须为主路由器,如果不是,需在你的主路由器上手动添加hosts记录,将官方服务器地址定向到官改路由器的IP地址
192.168.2.1 Smartplugconnect.phicomm.com
192.168.2.1 aircat.phicomm.com
192.168.2.1改为你的官改路由器的IP

如果需要恢复原来的官方服务器,只需在官改高级设置的hosts设置中删除对应记录并保存即可

2、使用说明
你可以在web上查看设备信息或进行设置,信息内容3秒定时更新
M1可设置的内容是屏幕亮度,设置后点“保存”按钮生效

DC1可设置的内容是各个开关的状态,当web控制界面上“重置开关”按钮(下图红框)关闭时,web只实时显示开关状态,点击“保存”按钮不会改变开关状态;当“重置开关”按钮打开时,web暂停刷新开关状态,点击“保存”按钮后会根据设置来改变开关状态

3、定时任务
可以通过系统的定时任务来控制智能设备,比如定时开关M1的显示屏、定制控制DC1的开关打开和关闭
注:必须启用过一次web控制开关(完成服务器重定向)后才能使用定时控制命令,但不要求web控制处于启用状态,在关闭状态同样可以使用定时控制

M1控制命令:
setm1 num
num可以为1、2、3
1:息屏 2:微亮 3、正常
比如23点息屏,7点亮屏
0 23 * * * setm1 1
0 7 * * * setm1 3

DC1控制命令:
setdc1 num
num代表各开关状态,用4位数字表示,1代表打开,0代表关闭(前面如果为0可省略),从左到右分别是开关3、开关2、开关1、总开关,比如1011表示开关2关闭,其他开关打开,11表示总开关和开关1打开,开关2和开关3关闭
比如23点关闭开关2,7点打开开关2
0 23 * * * setdc1 1011
0 7 * * * setdc1 1111

注:当前版本只支持控制一台M1和DC1,不支持多台控制
通过路由器的ddns(公网地址)或frp(私网地址)你可以远程访问路由器,从而实现远程控制智能设备。

]]>
http://iytc.net/wordpress/?feed=rss2&p=4925 138
windows 10下免虚拟机安装Ubuntu及Openwrt编译环境 http://iytc.net/wordpress/?p=4885 http://iytc.net/wordpress/?p=4885#comments Thu, 13 Dec 2018 03:27:30 +0000 http://iytc.net/wordpress/?p=4885 1、首先打开开发人员模式

2、开启windows的子功能

3、重启电脑

4、 在Microsoft Store中搜索Ubuntu,并安装

5、安装完后,就可以直接打开Ubuntu了
默认是一个终端,先设置用户名和密码

Ubuntu默认把磁盘挂载到/mnt目录下,可以直接cd /mnt/d进入d盘,进而操作文件。

Win­dows 文件系统对大小写不敏感会导致linux编译问题,需用管理员打开cmd,设置指定目录大小写敏感:
fsutil.exe file setCaseSensitiveInfo enable
需要注意的是,这个操作不会对此目录中已有的文件生效,只有新写入的文件才会继承这个属性。

【安装openwrt编译环境】
1、安装依赖库
sudo apt-get install build-essential subversion libncurses5-dev zlib1g-dev gawk gcc-multilib flex git-core gettext libssl-dev unzip python

2、下载openwrt源码
比如安装在D盘:
cd /mnt/d
git clone https://github.com/openwrt/openwrt
cd openwrt/
切换到18.06.1发布分支,方便以后可以用官方源来安装插件
git checkout openwrt-18.06
git checkout 70255e3d624cd393612069aae0a859d1acbbeeae

3、配置
make menuconfig
选择要编译的设备和模块

4、编译
编译前建议先关掉win10自带的windows defender的实时保护,可加快编译速度
第一次编译建议单核编译,便于问题定位(-j1)
make V=99 -j1
编译完成,固件在/mnt/d/openwrt/bin/targets目录

如果用SDK编译,可能会出现如下错误:
.xargs.bin: loadlocale.c:129: _nl_intern_locale_data: Assertion `cnt < (sizeof (_nl_value_type_LC_TIME) / sizeof (_nl_value_type_LC_TIME[0]))' failed. 需要执行如下命令: export LC_ALL=C

]]>
http://iytc.net/wordpress/?feed=rss2&p=4885 1
在Centos 7 VPS上编译新路由3(newifi 3)Openwrt固件 http://iytc.net/wordpress/?p=4882 http://iytc.net/wordpress/?p=4882#respond Thu, 13 Dec 2018 02:57:50 +0000 http://iytc.net/wordpress/?p=4882 本文描述在搬瓦工双11 VPS上编译新路由3(newifi 3)Openwrt固件的过程
VPS采用的操作系统为Centos 7 64位系统(centos 6缺省安装的gcc版本小于4.8,不能编译,需要先升级gcc版本,可参考https://www.quyu.net/info/628.html)

1、安装依赖库
yum install -y subversion binutils bzip2 gcc gcc-c++ gawk gettext flex xz time
yum install -y ncurses-devel zlib-devel make patch unzip perl-ExtUtils-MakeMaker
yum install -y glibc glibc-devel glibc-static quilt ncurses-lib sed sdcc intltool sharutils bison wget

2、下载openwrt源码
如下步骤以非root用户登陆(adduser添加用户,passwd修改用户密码,su切换用户)
git clone https://github.com/openwrt/openwrt
cd openwrt/
切换到18.06.1发布分支,方便以后可以用官方源来安装插件
git checkout openwrt-18.06
git checkout 70255e3d624cd393612069aae0a859d1acbbeeae

3、配置
./scripts/feeds update -a
./scripts/feeds install -a
make menuconfig
选择设备为newifi d2

4、编译
make V=99 -j1

---------------------------------------------------
补充:如果是编译最新的lede,对make、gcc、g++的版本有要求,需要升级

升级make至4.3:
wget http://mirrors.ustc.edu.cn/gnu/make/make-4.3.tar.gz
tar xf make-4.3.tar.gz
cd make-4.3/
# 安装到指定目录
./configure --prefix=/usr/local/make
make
make install
make -v
# 此时的 make 还是3.82 与环境变量有关系
whereis make
# 找一下都有哪些 make
cd /usr/bin/
mv make make.bak
# 把默认的 make 改名
ln -sv /usr/local/make/bin/make /usr/bin/make
# 建立一个软连接
make -v
# 查看一下大功告成
————————————————
用devtoolset升级gcc、g++至8.3,也可升级至7版本,将下面devtoolset-8改成devtoolset-7即可,注意每次编译前需执行scl切换开发环境:
sudo yum install centos-release-scl
sudo yum install devtoolset-8-gcc*
scl enable devtoolset-8 bash
gcc -v
----------
编译lede
adduser test
passwd test
su test
cd ~
git clone https://github.com/coolsnowwolf/lede
cd lede
./scripts/feeds update -a
./scripts/feeds install -a
make menuconfig
make -j8 download V=s
make -j1 V=s

用devtoolset开发环境有一个问题,不能在64位系统上交叉编译32位程序,因此还需源码编译升级gcc:
wget https://gmplib.org/download/gmp/gmp-6.1.2.tar.xz
tar xvf gmp-6.1.2.tar.xz
cd gmp-6.1.2
./configure --prefix=/usr/local/gmp
make && make install

wget http://www.mpfr.org/mpfr-current/mpfr-3.1.6.tar.gz
tar xvf mpfr-3.1.6.tar.gz
cd mpfr-3.1.6
./configure --prefix=/usr/local/mpfr --with-gmp=/usr/local/gmp
make && make install

wget ftp://ftp.gnu.org/gnu/mpc/mpc-1.0.3.tar.gz
tar xvf mpc-1.0.3.tar.gz
cd mpc-1.0.3
./configure --prefix=/usr/local/mpc --with-gmp=/usr/local/gmp -with-mpfr=/usr/local/mpfr
make && make install

vi /etc/ld.so.conf
#增加以下三行
/usr/local/gmp/lib
/usr/local/mpfr/lib
/usr/local/mpc/lib
#
ldconfig -v

wget ftp://ftp.gnu.org/gnu/gcc/gcc-6.4.0/gcc-6.4.0.tar.gz
tar xvf gcc-6.4.0.tar.gz
cd gcc-6.4.0
./configure --enable-checking=release --enable-languages=c,c++ --disable-multilib --with-gmp=/usr/local/gmp --with-mpfr=/usr/local/mpfr --with-mpc=/usr/local/mpc
make -j2 # 这个过程比较慢, 大概要半个多小时
make install

# 改名 /usr/bin 下的 cpp, c++, gcc, g++, gcov 这些文件, 再执行 gcc --version 就能看到新的版本信息了
mv /usr/bin/cpp /usr/bin/cpp_old
mv /usr/bin/gcc /usr/bin/gcc_old
mv /usr/bin/g++ /usr/bin/g++_old
mv /usr/bin/gcov /usr/bin/gcov_old

ln -sv /usr/local/bin/gcc /usr/bin/gcc
ln -sv /usr/local/bin/g++ /usr/bin/g++
ln -sv /usr/local/bin/cpp /usr/bin/cpp
ln -sv /usr/local/bin/gcov /usr/bin/gcov

]]>
http://iytc.net/wordpress/?feed=rss2&p=4882 0