ppp源码
⑴ 怎么安装java
怎么安装java环境
第一种方法:(自动配置)你可以直接下载MyEclipse6.0或如亏者以上版本(6.0以下的据渣拿神说不行)来用,这个不用安装环境(自动设置了环境变量)。
直接安装就可以使用了,希望对你有用。 第二种方法(手动配置):windows xp下配置JDK环境变量: 1.安装JDK,安装过程中可以自定义安装目录等信息,例如我们选择安装目录为D:\java\jdk1.5.0_08; 2.安装完成后,右击“我的电脑”,点击“属性”; 3.选择“高级”选项卡,点击“环境变量”; 4.在“系统变量”中,设置3项属性,JAVA_HOME,PATH,CLASSPATH(大小写无所谓),若已存在则点击“编辑”,不存在则点击“新建”; 5.JAVA_HOME指明JDK安装路径,就是刚才安装时所选择的路径D:\java\jdk1.5.0_08,此路径下包括lib,bin,jre等文件夹(此变量最好设置,因为以后运行tomcat,eclipse等都需要依*此变量);Path使得系统可以在任何路径下敏悉识别java命令,设为: %JAVA_HOME%\bin;%JAVA_HOME%\jre\bin CLASSPATH为java加载类(class or lib)路径,只有类在classpath中,java命令才能识别,设为: .;%JAVA_HOME%\lib\dt.jar;%JAVA_HOME%\lib\tools.jar (要加.表示当前路径) %JAVA_HOME%就是引用前面指定的JAVA_HOME; 6.“开始”->;“运行”,键入“cmd”; 7.键入命令“java -version”,“java”,“javac”几个命令,出现画面,说明环境变量配置成功; 8.好了,打完收工。
下面开始你的第一个java程序吧。
怎么下载和安装java
1.安装Java虚拟机1.1.下载JDK用户可以同过如下地址获取Java JDK开发包:java.sun/javase/downloads/index_jdk5.jsp将下载好的JDK解压后,安装在如本机的D:\java\jdk1.5.0_12。
安装路径一定不能为中文文件夹,文件夹名里不能出现空格。1.2.配置Java环境变量打开我的电脑属性窗口切换到高级标签,点击“环境变量”按钮在系统变量中选择“Path”变量,点击“编辑”按钮,把刚才用户安装的JDK下的bin文件夹路径填入其中。
例如用户把JDK安装在D盘,那么JDK的路径因改为D:\java\jdk1.5.0_12。那么在变量值里面就应该传入“D:\java\jdk1.5.0_12\bin;D:\java\jre1.5.0_12\bin;”。
接下来配置JAVA_HOME环境变量,点击“系统变量”下的“新建”按钮,输入变量名为“JAVA_HOME”,变量值为“D:\java\jdk1.5.0_12”。点击“确定”按钮。
最后配置CLASSPATH环境变量,同样点击“系统变量”下的“新建”按钮,输入变量名为“CLASSPATH”,变量值为“.;%JAVA_HOME%\lib\tools.jar;%JAVA_HOME%\lib\dt.jar”。
java安装步骤
来源网络知道,作者:further00 链接:./question/23557286?si=1 JDK安装方法 选择好安装路径。
安装到计算机上。下来进行一些设置。
首先右键点我的电脑。打开属性。
然后选择“高级”里面的“环境变量”,在新的打开界面中的系统变量需要设置三个属性“java_home”、“path”、“classpath”,其中在没安装过jdk的环境下。path属性是本来存在的。
而java_home和classpath是不存在的。 首先点“新建”,然后在变量名写上java_home,顾名其意该变量的含义就是java的安装路径,呵呵,然后在变量值写入刚才安装的路径“C:\jdk1.6”. 其次在系统变量里面找到path,然后点编辑,path变量的含义就是系统在任何路径下都可以识别java命令,则变量值为“%java_home%\bin;%java_home%\jre\bin”,(其中“%java_home%”的意思为刚才设置java_home的值),也可以直接写上“C:\jdk1.6\bin” 最后再点“新建”,然后在变量名上写classpath,该变量的含义是为java加载类(class or lib)路径,只有类在classpath中,java命令才能识别。
其值为“.;%java_home%\lib;%java_home%\lib\tools.jar (要加.表示当前路径)”,与相同“%java_home%有相同意思” 以上三个变量设置完毕,则按“确定”直至属性窗口消失,下来是验证看看安装是否成功。先打开“开始”->“运行”,打入“cmd”,进入dos系统界面。
然后打“java -version”,如果安装成功。系统会显示java version jdk"1.6.0"。
确保安装在C盘文件名为jdk1.6,环境变量直接复制就可以了 还有在c盘下保存下面的代码,文件名为Myjava.java的文件。 public class Myjava{ public static void main(String args[]){ System.out.println("试试看,装好了吗?."); } } 进入cmd 打 c: cd\ javac Myjava.java java Myjava 如果出现 试试看,装好了吗? 就说明安装好了,可以用了。
java怎么安装
下载后直接安装就好!一直下一步啦!
然后配置环境变量:
在windows桌面上右击“我的电脑” —>“属性” —>“高级” —>“环境变量”,在“系统变量”里我们可以看到系统的各个环境变量的值。双击某个变量名可以修改变量值,变量值之间用“;”隔开。我们还可以“新建”原先没有的变量。与jdk有关的有3个环境变量;“java_home”,“path”,“classpath”。我的系统中“path”变量已经存在,可以直接添加新值(其它变量值不要动,防止其它程序运行异常),其它两个变量需要新建。
“java_home”,设置jdk的安装路径,比如“e:\java\jdk1.5”,以下简称“%java_home%”。
“path”,设置jdk中各个程序的路径,“%java_home%\bin;%java_home%\jre\bin;”
“classpath”,设置java各个类的路径,“.;%java_home%\lib;%java_home%\lib\tools.jar”。前面的“.”不可少,它代表了我们为自己的java类建立的工作路径,其它的是jdk自带的标准类库路径。
设置好环境变量后按“确定”退出。按“win”+“r”键进入“运行”窗口,运行“cmd”进入DOS窗口,在输入“javac”后回车,如果有显示java的帮助信息,就说明环境变量设置成功。
怎么安装JAVA啊!
您好,亲爱的楼主,很高兴为您回答
java的运行需要虚拟机的支持,但是对于初学者来说,与其说是虚拟机倒不如说是java运行时环境(其中就包括了虚拟机),所谓java运行时环境,也是一个软件及其配置,配置好了java就可以在其中运行了。
这其中相当复杂,我们简化一下问题吧。简单来说,java的运行安装jdk,这其中包括了两个版本的运行时环境,初学者不需要区分这个。
你要到sun公司的网站去下载并安装这个软件,然后配置环境变量。
重复一下,你弄好这个编程基本环境需要三步:下载jdk;安装jdk;配置环境变量。
我从第一步开始介绍一下。
第一步,下载:到sun的官方网站去下载jdk,网址是: java.sun/,在右边有popular download,其下有java SE的链接,点开,一步一步操作,直到下载成功。
第二步,安装:新手建议按照默认设置安装,什么也不改变,直到安装结束。
第三步:配置环境变量,一共有三个,JAVA_HOME,PATH和CLASSPATH,网上都有详尽的配置方法介绍,可以参照一下。
接下来就可以编写并编译、运行你的java程序了。这也是三步,编写、编译、运行。你用记事本进行的那一步是编写,用javac命令进行的这一步是编译,用java命令进行的这一步是运行。
好了,先说这么多吧,这每一步都充满会挑战的,祝你好运。
java安装步骤
来源网络知道,作者:further00
链接:
JDK安装方法
选择好安装路径。安装到计算机上。下来进行一些设置。首先右键点我的电脑。打开属性。然后选择“高级”里面的“环境变量”,在新的打开界面中的系统变量需要设置三个属性“java_home”、“path”、“classpath”,其中在没安装过jdk的环境下。path属性是本来存在的。而java_home和classpath是不存在的。
首先点“新建”,然后在变量名写上java_home,顾名其意该变量的含义就是java的安装路径,呵呵,然后在变量值写入刚才安装的路径“C:\jdk1.6”.
其次在系统变量里面找到path,然后点编辑,path变量的含义就是系统在任何路径下都可以识别java命令,则变量值为“%java_home%\bin;%java_home%\jre\bin”,(其中“%java_home%”的意思为刚才设置java_home的值),也可以直接写上“C:\jdk1.6\bin”
最后再点“新建”,然后在变量名上写classpath,该变量的含义是为java加载类(class or lib)路径,只有类在classpath中,java命令才能识别。其值为“.;%java_home%\lib;%java_home%\lib\tools.jar (要加.表示当前路径)”,与相同“%java_home%有相同意思”
以上三个变量设置完毕,则按“确定”直至属性窗口消失,下来是验证看看安装是否成功。先打开“开始”->;“运行”,打入“cmd”,进入dos系统界面。然后打“java -version”,如果安装成功。系统会显示java version jdk"1.6.0"。
确保安装在C盘文件名为jdk1.6,环境变量直接复制就可以了
还有在c盘下保存下面的代码,文件名为Myjava.java的文件。
public class Myjava{
public static void main(String args[]){
System.out.println("试试看,装好了吗?.");
}
}
进入cmd 打
c:
cd\
javac Myjava.java
java Myjava
如果出现 试试看,装好了吗?
就说明安装好了,可以用了。
怎么安装java环境
第一种方法:(自动配置)
你可以直接下载MyEclipse6.0或者以上版本(6.0以下的据说不行)来用,这个不用安装环境(自动设置了环境变量)。直接安装就可以使用了,希望对你有用。
第二种方法(手动配置):
windows xp下配置JDK环境变量:
1.安装JDK,安装过程中可以自定义安装目录等信息,例如我们选择安装目录为D:\java\jdk1.5.0_08;
2.安装完成后,右击“我的电脑”,点击“属性”;
3.选择“高级”选项卡,点击“环境变量”;
4.在“系统变量”中,设置3项属性,JAVA_HOME,PATH,CLASSPATH(大小写无所谓),若已存在则点击“编辑”,不存在则点击“新建”;
5.JAVA_HOME指明JDK安装路径,就是刚才安装时所选择的路径D:\java\jdk1.5.0_08,此路径下包括lib,bin,jre等文件夹(此变量最好设置,因为以后运行tomcat,eclipse等都需要依*此变量);
Path使得系统可以在任何路径下识别java命令,设为:
%JAVA_HOME%\bin;%JAVA_HOME%\jre\bin
CLASSPATH为java加载类(class or lib)路径,只有类在classpath中,java命令才能识别,设为:
.;%JAVA_HOME%\lib\dt.jar;%JAVA_HOME%\lib\tools.jar (要加.表示当前路径)
%JAVA_HOME%就是引用前面指定的JAVA_HOME;
6.“开始”->;;“运行”,键入“cmd”;
7.键入命令“java -version”,“java”,“javac”几个命令,出现画面,说明环境变量配置成功;
8.好了,打完收工。下面开始你的第一个java程序吧。
怎样在手机上安装JAVA游戏
你在你的手机里打开百宝箱,里面有个安装文件,打开后提示是否安装,点安装即可!需要你安装一个Samsung PC Studio 3.0。
然后再试试。如果是D608传JAVA时"安装错误"的解决方法(J3版本java安装过程):(1)拿出手机,连接数据线,进入JAVA世界,设定里把接入点名称一定要设为“inter"不能为空白,用户名、密码都留空,代理服务器设为“无效”(一定要这样设置,否则手机会重新起动;而k4版本则接入点名称、用户名、密码都留空)(2)安装三星JAVA传输免刷机软件和Softick PPP软件,注册并设置好参数。
(3)然后打开Softick PPP软件,并击活Softick PPP。(4)在手机上先输入指令#*536963#,开启java下载(输入一次就可以),会出现提示信息:“Serial JAVA others disable”。
等几秒后,按C键回到待机画面,然后再输入指令:#*5737425#进入java下载菜单在菜单中选择第一项“PPP UP ”(只能选一次,不然也会重起),然后选第二项“USB”这个选项(USB也只可选择一次,这时侯手机重新启动。{注:k4版本这一步可能不会启动,而接着操作下面就可以了})。
手机重启后,再把Softick PPP软件关掉,把数据线也从手机里拔掉。然后再重新操作一次:手机插上数据线-->打开Softick PPP软件-->击活Softick PPP --> 输入指令:#*536963# -->再输入指令:#*5737425# --> PPP UP --> USB(如果到这一步还是重启,则再重新操作一次,在操作前先将电脑重启一次,并且拔掉网线,关掉防火墙,不要运行其他的任何程序,再传就OK了)。
注:本人曾经重复试验多次,不按照以上步骤来的话,结果不是手机重新起动就是安装错误。(5)打开"三星JAVA传输免刷机软件!",点击三星JAVA传输免刷机软件的“加入”来载入一个JAVA文件,扩展名为*.jad,点击打开,游戏会出现在JAVA传输免刷机软件的载入清单了。
(6)接着选手机的“串连端口下载”("USB"项下面的一项就是"串连端口下载")就可以看到进度条,接着就可以正常下载JAVA游戏了。如果想继续下载的话,再在JAVA传输免刷机软件中加入一个JAVA文件,然后再输入#*5737425#直接选第二项“串连端口下载”(注意:直接选第二项“串连端口下载”,不要再重复选“PPP UP ”和“USB”了,如果选的话手机会重启)下载其他JAVA游戏。
(7)传完你想传的JAVA程序后,还要在手机里输入#*536961#用来关闭serial java 下载,会提示:“WAPSAR enable HTTP disable”。(如果你没有输入这个指令那么以后你浏览WAP的时候第一次正常,再浏览WAP时就会死机和PIM & File Manager软件找不到小D的端口而不能正常使用。
好像J3版本不输入关闭Java指令也没关系,也一样正常运行,不过为了保险,第7步还是做比较妥当)。哥哥把分给 我好么。
怎么安装JAVA
iask.sina/b/16090400这个网址1. 安装 JDK 这里假设下载后的 JDK 安装文件名称是 jdk-1_5_0_06- windows-i586-p.exe ,双击这个文件可以开始程序的安装。
开始的第一步是同意使用条款,接着则开始安装 JDK 。在安装 JDK 时可以选择安装的项目,如图 2-3 所示,依次是开发工具 (Development Tools) 、演示程序 (Demos) 、 API 源代码 (Source Code) 与公用 JRE(Public JRE) 。
开发工具是必需的,范例程序可供您日后编写程序时参考, API 源代码可以让您了解所使用的 API 实际上是如何编写的,而 JRE 则是执行 Java 程序所必要的,所以这 4 个项目基本上都必须安装。 图 2-3 安装 JDK 的画面 要注意的是图 2-3 下面的“安装到”,应记下 JDK 安装的位置,默认是 C:\Program Files\Java\jdk1.5.0_06\ ,待会需要使用到这个信息。
如果想改变安装目的地,可以单击“更改”按钮来改变,接着单击“下一步”按钮就开始进行 JDK 的安装。完成 JDK 的安装之后,接着会安装“公用 JRE ”。
同样地应留意图 2-4 下方的“安装到”,了解 JRE 的安装地址,默认是 C:\Program Files\Java\jre1.5.0_06\ 。单击“下一步”按钮之后,会询问哪些浏览器要使用 Java Plug-In ,这让您的浏览器可以执行 Java Applet 。
选择要支持 Java Plug-In 的浏览器之后,单击“下一步”按钮可以开始安装公用 JRE 。 图 2-4 安装 JRE 的画面 2设置 Path 与 Classpath 对于习惯图形化接口操作的初学者而言,在命令符模式下执行程序是一件陌生的事,也因此不了解 Path 路径设置的方法与作用,而 Java 执行的平台也有自己的一套路径规则来寻找编写好的 Java 类,也就是所谓的 Classpath 设置。
本节将介绍如何进行这些相关的设置。 2.1 设置 Path 在安装好 JDK 程序之后,在 JDK 安装目录 ( 假设是 C:\Program Files\Java\jdk1.5.0_06) 下的 bin 目录中,会提供一些开发 Java 程序时必备的工具程序。
对于 Java 的初学者,建议从命令符模式 ( 在 Windows 2000/XP 下称之为命令提示符 ) 下来操作这些工具程序。您可以在 Windows 2000/XP 的“开始”菜单中选择“运行”,输入“ cmd ”命令来打开命令符模式。
虽然您知道 JDK 的工具程序是位于 bin 目录下,但您的操作系统并不知道如何找到这些工具程序。所以当您输入 javac 尝试执行编译程序时,命令符模式下会告诉您找不到 javac 工具程序,如图 2-8 所示。
图 2-8 出现这个信息表示找不到指定的工具程序 您必须告诉操作系统,应该到哪些目录下尝试找到您所想使用的工具程序。有几个方法可以进行这项设置,最简便的方法就是设置系统变量中的 Path 环境变量。
在 Windows 2000/XP 下可以选择桌面上的“我的电脑”并单击鼠标右键,选择“属性”后切换至“高级”页面,并单击下方的“环境变量”按钮,在“环境变量”对话框中编辑 Path 变量,如图 2-9 所示。 图 2-9 选择 Path 变量并单击“编辑”按钮以进行路径设置 如图 2-10 所示,在 Path 变量的“编辑系统变量”对话框中,在“变量值”文本框中先输入一个“ ; ”,接着输入 JDK bin 目录的路径 ( 这里假设是 C:\Program Files\Java\jdk1.5.0_06\bin) ,然后单击“确定”按钮即可完成设置。
图 2-10 在 Path 变量中加入 JDK 的 bin 目录路径 设置 Path 变量之后,要重新打开一个命令符模式才能重新读入 Path 变量内容,接着如果执行 javac 程序,应该可以看到图 2-11 所示的画面。 图 2-11 若设置 Path 变量成功,就可以找到指定的工具程序 也可以在命令符模式下执行以下的命令,直接设置目前的环境变量,包括 Path 变量 ( 这个设置在下次重新打开命令符模式时就不再有效 ) : set Path=%Path%;C:\Program Files\Java\jdk1.5.0_06\bin由于以上介绍的 Path 设置都是寻找 JDK 安装目录下的 bin 目录,所以操作系统会搜索 JDK 安装目录下的工具程序。
这样当执行 java 程序时,默认会使用 JDK 所附的 JRE( 即 C:\Program Files\Java\jdk1.5.0_06\jre) ,而不是公用的 JRE( 即 C:\Program Files\Java\jre1.5.0_06\) 。 简单地说,操作系统会尝试在指定的 Path 变量中寻找指定的工具程序。
当输入 javac 命令时,由于 Path 变量中有设置 JDK 的 bin 目录的路径,操作系统就可以根据这个信息来找到 javac 工具程序。 2.2 设置 Classpath Java 执行环境本身就是一个平台,执行于这个平台上的程序是已编译完成的 Java 程序 ( 后面会介绍到 Java 程序编译完成之后,会以 .class 文件存在 ) 。
如果将 Java 执行环境比喻为操作系统,如果设置 Path 变量是为了让操作系统找到指定的工具程序 ( 以 Windows 来说就是找到 .exe 文件 ) ,则设置 Classpath 的目的就是让 Java 执行环境找到指定的 Java 程序 ( 也就是 .class 文件 ) 。 有几个方法可以设置 Classpath ,最简单的方法是在系统变量中新增 Classpath 环境变量。
在图 2-9 中的“系统变量”下单击“新建”按钮,在“变量名”文本框中输入 Classpath ,在“变量值”文本框中输入 Java 类文件的位置。例如可以输入“ .;C:\Program Files\Java\jdk1.5.0_06\lib\tools.jar; C:\Program Files\Java\jdk1.5.0_06\lib\rt.jar ” (jar 文件是 zip 压。
⑵ 如何设置Linux服务器为PPP拨入服务器
我按下面这个配置成功了,你可以试下:
一、安装的前提条件
1.确保安装了网卡并工作正常
使用命令
#ifconfig eth0
查看网卡状态,然后关闭ifdown eth0,注意一定要关闭ifdown eth0
2.在系统中不要设置默认路由(网关),让ADSL拨号后自动获得
如果已经设置了默认路由,使用以下方法删除:
在文件 /etc/sysconfig/network 中删除 GATEWAY= 这一行,然后以root执行:
#/etc/rc.d/init.d/network restart
3.已经安装了pppd软件包
如果存在文件 /usr/sbin/pppd,则说明已经安装了pppd;
如果未安装,从RedHatLinux 6.2安装光盘上安装ppp-2.3.11-
4.i386.rpm这个软件包
二、安装PPPOE客户端软件
Linux下的PPPOE客户端软件比较多,而且大多使用GNU License,我们推荐使用rp-pppoe 这个软件包。从http://www.roaringpenguin.com/pppoe/这个网站上,不仅可以下载
RedHat 62平台下的rp-pppoe的二进制软件包,而且可以下载源代码软件包。
1.二进制软件包的安装:
A.下载二进制软件包
http://www.roaringpenguin.com/pppoe/rp-pppoe-3.2-1.i386.rpm
B.进行安装
以root执行:
#rpm -Uvh rp-pppoe-3.2-1.i386.rpm
2.从源代码进行安装:
从源代码进行安装同样适用于其它平台的Linux,但必须在Linux系统中安装gcc编译器。
A.下载源代码软件包
http://www.roaringpenguin.com/pppoe/rp-pppoe-3.2.tar.gz
B.解压缩
#tar xvfz rp-pppoe-3.2.tar.gz
#cd rp-pppoe-3.2
C.进行编译和安装
运行脚本
#./go
将自动进行编译和安装,最后,调用/usr/sbin/adsl-setup进行配置,具体解释见三。
三、配置PPPOE客户端软件
安装完软件包后,必须配置pppoe的配置文件/etc/ppp/pppoe.conf,从而让ADSL拨号时使用配置文件中的用户名、密码等参数。我们不必手工改动这个文件,可以使用adsl-setup这个工具进行配置:
#/usr/sbin/adsl-setup
当出现
>>> Enter your PPPoE user name :
输入ADSL帐号的用户名
当出现
>>> Enter the Ethernet interface connected to the ADSL modem
For Solaris, this is likely to be something like /dev/hme0.
For Linux, it will be ethn, where 'n' is a number.
(default eth0):
输入 eth0 ,这是ADSL相连的网卡的名字
当出现
>>> Enter the demand value (default no):
输入 no
当出现
>>> Enter the DNS information here:
输入 server ,这表示使用ADSL拨号自动获得的DNS服务器IP地址
当出现
>>> Please enter your PPPoE password:
输入ADSL帐号的密码
当出现
>>> Choose a type of firewall (0-2):
输入 0 ,不使用防火墙
当出现
>>> Accept these settings and adjust configuration files (y/n)?
如果输入的信息正确,输入 y ,完成配置,否则,输入 n 重新输入。
四、启动PPPOE客户端软件
使用命令
/usr/sbin/adsl-start 启动PPPOE客户端软件,进行连接,如果成功,将出现
Connected;
如果不成功,请检查网线、ADSL MODEM等物理设备,并查看 /var/log/messages中的信息
/usr/sbin/adsl-stop 关闭和ISP的连接
/usr/sbin/adsl-status 查看当前连接的状态
如果想在Linux系统启动时自动启动ADSL连接,输入以下命令
#chkconfig --add adsl
将在当前的运行级下加入ADSL的自启动脚本
五、测试
当连接成功后,使用命令
#ifconfig -a
在输出中应该含有关于 ppp0 的一堆信息,其中还绑定了 IP 地址,说明已经从拨号中获得了IP地址。
使用命令
#netstat -nr
查看路由表信息,这时的默认路由应该是上面获得的IP地址。
如果没有默认路由,我们可以手动增加:
#route add default gw 上面获得的IP地址
使用命令
#nslookup www.sina.com.cn
如果解析出新浪的IP,说明已经从拨号中正确获得了DNS服务器
最后,使用命令ping某个域名或IP,如果有响应,表示你已经大功告成了。
六、其它说明
1、RedHat Linux 7.1已经集成了rp-pppoe这个软件包,只不过版本有些低,如果你不在意版本高低,可以直接进行三后面的步骤。
2、以后要拔号上网时,只要:
ifdown eth0
ifup ppp0
/usr/sbin/adsl-start
⑶ 如何编译OpenWrt
Openwrt 官方正式的发行版是已编译好了的映像文件(后缀名bin或trx、trx2),此映像文件可从Openwrt官方网站的下载页面中轻松获取到,连接地址为 OpenWrt官方网站。这些编译好的映像文件是基于默认的配置设置,且只针对受支持的平台或设备的。因此,为什么要打造一个自己的映像文件,理由有以下四点:
您想拥有一个个性化的配置OpenWrt(彰显个性,在朋友圈子里显摆显摆,开个玩笑);
您想在实验性的平台上测试OpenWrt;
您参与测试或参与开发OpenWrt的工作;
或者,最简单的目的就是为了保持自己的Openwrt为最新版本;
若想实现上述目的,其实很简单,按下述文字即可成功编译出一个您的Openwrt来。
准备工作
在开始编译Openwrt之前需要您做些准备工作;与其他编译过程一样,类似的编译工具和编译环境是必不可少的:
一个构建OpenWrt映像的系统平台,简单说就是准备一个操作系统(比如Ubuntu、Debian等);
确保安装了所需的依赖关系库, (在debian系统中就是安装各种需要的软件包)
OpenWrt源代码副本
首先, 开机登陆到支持编译Openwrt的操作系统(废话了)。实体机或者虚拟机(Vmware 或者 Qemu)里的操作系统都行,这里推荐使用Linux系统。 bsd和mac osx系统也可以编,但不推荐,且未验证是否可编译成功。下文假定您使用的是Debian操作系统,使用 apt-get 来管理包. 替代的选择是 Ubuntu (分支 Kubuntu, Xubuntu 等即可)。
第二步, 就是安装所需要的各种软件包, 包括编译器,解压工具,特定的库等. 这些工作可以简单的通过键入以下命令 (通常需要root 或者是 sudo 权限),以root权限安装下列软件包(可能并不完整,会有提示,提示缺少即装就可以了):
32位(x86)请执行下列命令:
# apt-get install build-essential asciidoc binutils bzip2 gawk gettext \
git libncurses5-dev libz-dev patch unzip zlib1g-dev
64位(x86_64)请执行下列命令(多装了哪些库或软件包呢?请您仔细看一看哦):
# apt-get install build-essential asciidoc binutils bzip2 gawk gettext \
git libncurses5-dev libz-dev patch unzip zlib1g-dev ia32-libs \
lib32gcc1 libc6-dev-i386
参考 本列表中 所列的编译环境所需要软件包或库。
某些依赖的为库或软件包也许操作系统中已经安装过,此时apt-get会作出提示(提示您忽略或重新安装的),别紧张,放轻松些,编译Openwrt不会像编译DD-WRT那样难的(至少本人是体会到了编译DD-WRT的难)。
最后下载一份完整的 Openwrt 源码到编译环境中。关于Openwrt的源代码下载,途径有二,一是通过 svn ,一是通过 git,建议使用 svn ,因为Openwrt主要以 svn 来维护Openwrt系统的版本。另外,请注意Openwrt中不同的分支版本,一个是用得较多的开发快照,俗称 trunk,二是稳定版,俗称 backfire。
安装Subversion
若你想通过svn下载源代码,你需安装 Subversion。Subversion,或称SVN, 是OpenWrt的project中用来控制版本的系统,它非常类似的 CVS的界面和使用条款。 执行下述命令即可安装SVN,很容易的:
# apt-get install subversion
Subversion安装完毕,通过SVN命令可获取得到一份OpenWrt纯净源代码。您还得创建一个目录以便存放获取得到的Openwrt源代码,要获取源代码你还得输入subversion命令来获取 (svn里这种操作称之为'check out') 。命令很简单的,继续看下去就能见到了,别着急,耐心点儿。
编译流程
编译专属于您的设备的特定Openwrt固件以一下五个步骤:
通过Subversion命令获得源代码;
更新(或安装) package feeds〔package feeds无法确切翻译,待译吧);
创建一个默认配置以检查编译环境是否搭建好了 (假如需要的话);
用Menuconfig来配置即将编译生成的固件映像文件的配置项;
最后开始编译固件;
下载源代码
最后,下载一份完整的OpenWrt源代码。你可选择:
下载稳定发行版,或
下载开发版 (俗称"trunk"版)。
使用发行版的源码
截止本文时, Openwrt公开发行的稳定版为 OpenWrt 10.03 "backfire"。此版本是最稳定的,但也许不包括最新更新的补丁或最新编写的出的新功能。
下述代码即举例说明了通过svn从brandkfire获得backfire源代码(此版本意思是从trunk分支的补丁也在backfire版本中了,即包含修复补丁):
# mkdir OpenWrt/
# cd OpenWrt/
# svn co svn://svn.openwrt.org/openwrt/branches/backfire
注解: 上述svn命令将在当前目录创建一个 OpenWrt/backfire/ 子目录,此目录包含此命令获取到的源代码。
您也可以通过下述命令,下载不含修复补丁的backfire的原版源码:
# svn co svn://svn.openwrt.org/openwrt/tags/backfire_10.03
使用开发版源代码
当前的开发版本分支(trunk)已包含最新的实验补丁。此分支或许还突破了Openwrt原来所不支持的硬件设备的限制哦,惊喜的同时也有风险存在。因此,编译trunk版,慎之~
# mkdir OpenWrt/
# cd OpenWrt/
# svn co svn://svn.openwrt.org/openwrt/trunk/
更多详细资料详见: https://dev.openwrt.org/wiki/GetSource.
跟进并更新源代码
因Openwrt的源代码随时都会变动,故此命令将确保您所获取得到的源码的最新性。下述假设您用的是backfire版本的源码:
## Here, backfire is the directory name of the current release branch you're tracking
# cd OpenWrt/backfire/
# svn up
'svn up' 命令用于更新SVN上更新了,但本地尚未更新的这部分源代码(本人实践证明此命令会将本地源码与SVN上的源码先比较,若SVN有更新才会下载更新的部分,很实用的一个命令)。如果未指定目标路径,则此命令将更新当前目录及当前目录的子目录内的源码。
Feeds下载
Feeds即为包含到你的OpenWrt环境中的额外软件包的索引之类的。(feed译名很多,莫衷一是,至2008年底为止,还没有一个十分通用而备受认可的中文译名;所以此文当中我们用英文feed来称呼)。 最主要的Feeds有以下三个:
'packages' - 路由的基本功能,
'LuCI' - OpenWrt默认的GUI(WEB管理界面), 及
'Xwrt' - 其他的GUI。
一般情况,你至少需要含 'packages' 和 'LuCI'两个Feeds。
下载完feeds之后, (为编译OpenWrt的recipies额外的预定义包) 您可以检查哪些feeds要包括在内。编辑在你的编译环境的根目录下的'feeds.conf.default'文件。
然后使用下列命令开始下载(注:可能你需要先运行cd trunk进入trunk目录才能成功执行下列命令):
# ./scripts/feeds update -a
在此之后,下载的软件包需要安装。亦即指的下边的命令啦。若路过下边的install命令则后续make menuconfig将无法成功执行!(注:可能你需要先运行cd trunk进入trunk目录才能成功执行下列命令):
# ./scripts/feeds install -a
只需编辑Feeds的配置文件或运行更新命令,即可很方便地更新或添加新的实验性的packages到源码中并编译到OpenWrt固件去。
注意:请老坛友及旧的新闻组成员们注意了,这一步取代了创建符号链接symlinks的老办法哦。
更新Feeds
诸如此类源码,你得定期更新Feeds。 通过如上相同的命令:
# ./scripts/feeds update -a
# ./scripts/feeds install -a
注意:若你清楚地知道你不需添加新的packages到menuconfig中去,那么你可在更新Feeds时跳过这一步。
生成配置
You may not have to make configration always after updating sources and feeds, but making it ensures that all packages from source and feeds are correctly included in your build configuration.
Defconfig
下一步是检查编译环境,若可进行编译则生成默认配置:
# make defconfig
若defconfig回显提示缺少软件包或编译库等依赖,则按提示安装所缺软件包或库等即可,不难的,细心点就行。
Menuconfig
menuconfig是一个基于文本的工具,它处理选择的目标(需要还是不需要)、编译生成软件包(openwrt下是IPKG格式)以及内核选项(编译成模块还是内核)等等
# make menuconfig
在你离开并保存配置文件(默认都是.config)后,将自动配置依赖关系,让你可以着手编译更新的固件。
大众可通过'menuconfig'这一简单的图形化的配置环境,非常轻松地编译出专属您本人的OpenWrt固件。
可以用'menuconfig',以开发的意图来编译OpenWrt的固件,为自己(个人)创造一个结构简单但是功能强大的环境。(上句实在难翻译,只能意译。并且也请大家都学习下编译OP固件,让以OP固件盈利的人丢掉那肮脏的饭碗!)
Menuconfig或多或少有些难以说明的地方,即使是最专业的配置,也可以寻求帮助并加以解决。 需要你指定何种目标平台,要包含的package软件包和内核模块等均需要你指定,配置标准的过程中会包括修改:
目标平台(即路由器何种架构,BCM呢还是AR均可选择)
选择要包含的package软件包
构建系统设置
内核模块
Target system is selected from the extensive list of supported platforms, with the numerous target profiles – ranging from specific devices to generic profiles, all depending on the particular device at hand. Package selection has the option of either 'selecting all package', which might be un-practical in certain situation, or relying on the default set of packages will be adequate or make an indivial selection. It is here needed to mention that some package combinations might break the build process, so it can take some experimentation before the expected result is reached. Added to this, the OpenWrt developers are themselves only maintaining a smaller set of packages – which includes all default packages – but, the feeds-script makes it very simple to handle a locally maintained set of packages and integrate them in the build-process.
假如你需要LuCI, 要到Administration 菜单里,在LuCI组件的子菜单下, 并选择: luci-admin-core, luci-admin-full, and luci-admin-mini组件包。
假如你不需要PPP,你可到Network菜单下取消对它的选择,以便编译时不包含此组件。
Menuconfig用法: 确保这些组件包是以 '*'星号标记而不是 'M'标记。
如果你是以星号 '*'标记该组件包, 则该组件包将编译进最终生成的OpenWrt固件中。
如果你仅以 'M'标记该组件包, 则该组件包将不会编译进最终生成的OpenWrt固件中。
The final step before the process of compiling the intended image(s) is to exit 'menuconfig' – this also includes the option to save a specific configuration or load an already existing, and pre-configured, version.
Exit and save.
Source Mirrors
The 'Build system settings' include some efficient options for changing package locations which makes it easy to handle a local package set:
Local mirror for source packages
Download folder
In the case of the first option, you simply enter a full URL to the web or ftp server on which the package sources are hosted. Download folder would in the same way be the path to a local folder on the build system (or network). If you have a web/ftp-server hosting the tarballs, the OpenWrt build system will try this one before trying to download from the location(s) mentioned in the Makefiles . Similar if a local 'download folder', residing on the build system, has been specified. The 'Kernel moles' option is required if you need specific (non-standard) drivers and so forth – this would typically be things like moles for USB or particular network interface drivers etc.
编译固件
万事具备,只欠东风,通过下面简单的make命令来编译:
# make
在多核电脑中编译
具有多核CPU处理器的电脑进行编译,使用下述参数可令编译过程加速。 常规用法为 <您cpu处理器的数目 + 1> – 例如使用3进程来编译 (即双核CPU), 命令及参数如下:
# make -j 3
后台编译
若你在这个系统内编译OpenWrt的同时还处理其他,可以让闲置的I/O及CPU来在后台编译固件 (双核CPU):
# ionice -c 3 nice -n 20 make -j 2
编译简单的基本的软件包
当你为OpenWrt开发或打包软件包,编译简单的基本的软件包可以很轻易地编译该软件包 (例如, 软件包cups):
# make package/cups/compile V=99
一个在Feeds里的软件包大约是这样子的:
# make package/feeds/packages/ndyndns/compile V=99
编译错误
如果因某种不知道的原因而编译失败,下面有种简单的方法来得知编译到底错在哪里了:
# make V=99 2>&1 |tee build.log |grep -i error
上述编译命令意为:V99参数,将出错信息保存在build.log,生成输出完整详细的副本(with stdout piped to stderr),只有在屏幕上显示的错误。
举例说明:
# ionice -c 3 nice -n 20 make -j 2 V=99 CONFIG_DEBUG_SECTION_MISMATCH=y 2>&1 \
|tee build.log |egrep -i '(warn|error)'
The above saves a full verbose of the build output (with stdout piped to stderr) in build.log and outputs only warnings and errors while building using only background resources on a al core CPU.
一键编译
即使用脚本来编译Openwrt固件。许多朋友编译Openwrt是用的脚本来编译的,详见: https://forum.openwrt.org/viewtopic.php?id=28267
生成的固件在哪
编译成功后所生成的固件文件位于bin目录下,可用如下命令查看:
# cd bin/
# ls */
清理
编译OpneWrt时你可能需要一个清洁干净的编译环境。 以下操作有利用编译工作:
清洁
清洁trunk/ 目录,在编译过程中使用“make clean”命令即可。 此命令将删除bin目录和build_dir目录下的所有文件及文件夹。
## See CAUTION below
# make clean
⑷ 谁能给我一个Linux系统中命令的详细分析(包括源代码的分析)
Linux 命令也是查看使用空间的,但是与df命令不同的是Linux 命令是对文件和目录磁盘使用的空间的查看,还是和df命令有一些区别的,这里介绍Linux 命令。
:查询档案或目录的磁盘使用空间
a:显示全部目录和其次目录下的每个档案所占的磁盘空间
b:大小用bytes来表示 (默认值为k bytes)
c:最后再加上总计 (默认值)
s:只显示各档案大小的总合
x:只计算同属同一个档案系统的档案
L:计算所有的档案大小
常用命令: –a
操作详解
引用
指令 能以指定的目录下的子目录为单位,显示每个目录内所有档案所占用的磁盘空间大小。例如:
# -h /etc
104K /etc/defaults
6.0K /etc/X11
8.0K /etc/bluetooth
4.0K /etc/gnats
52K /etc/isdn
388K /etc/mail
68K /etc/mtree
2.0K /etc/ntp
38K /etc/pam.d
44K /etc/periodic/daily
6.0K /etc/periodic/monthly
42K /etc/periodic/security
16K /etc/periodic/weekly
110K /etc/periodic
6.0K /etc/ppp
318K /etc/rc.d
2.0K /etc/skel
130K /etc/ssh
10K /etc/ssl
1.7M /etc
我们目样使用 -h 参数来显示 human-readable 的格式。在应用时,我们可以使用 这个指令来查看哪个目录占用最多的空间。不过, 的输出结果通常很长,我们可以加上 -s 参数来省略指定目录下的子目录,而只显示该目录的总合即可:
# -sh /etc
1.7M /etc
在查看目录的使用情形时,我们可以将输出结果导到 sort 指令进行排序,以了解哪个档案用了最多的空间:
# /etc | sort -nr | more
1746 /etc
388 /etc/mail
318 /etc/rc.d
130 /etc/ssh
110 /etc/periodic
104 /etc/defaults
68 /etc/mtree
52 /etc/isdn
44 /etc/periodic/daily
42 /etc/periodic/security
38 /etc/pam.d
16 /etc/periodic/weekly
10 /etc/ssl
8 /etc/bluetooth
6 /etc/ppp
6 /etc/periodic/monthly
6 /etc/X11
4 /etc/gnats
2 /etc/skel
2 /etc/ntp
sort 的参数 -nr 表示要以数字排序法进行反向排序,因为我们要对目录大小做排序,所以不可以使用 human-readable 的大小输出,不然目录大小中会有 K、M 等字样,会造成排序不正确。
现在明了了Linux 命令和Linux df命令的不同之处了吗