



版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、个人收集整理勿做商业用途封面个人收集整理勿做商业用途作者: Pan Hongliang仅供个人学习Windows 下 NS2 的详细安装过程 通 信网 络 发布时间: 2009-07-02 16:07:53 简单的说, NS 2 是一个网络模拟器,所以经常被用到网络课的教学中。NS-2 是 OpenSource 的,最早的版本是在 linux/unix 本,但从 2.26 以后就放弃了对 vc 的支持,所以现在装下运行的,后来有了windowsNS2 只有两条路,要么装个下用 vc 编译运行的版linux ,要么就在windows下装个cygwin ,然后再在cygwin上装ns2.个人收集整
2、理勿做商业用途为了一个 ns2 (完成安装后不过100M )而安装 linux (RH9 完全安装大概在5G 左右)实在不值,所以我决定用 cygwin先去/setup.exe下载 setup.exe ,运行,得到这个界面:点下一步,出现这个界面:选择 “Install fromInternet,”当然,如果本地已经下载了你所需要的package ,也可以选 “Install fromLocal Directory”接下来选择安装位置:可以自己选择一个目录安装。现在 (10/13/05) 的 cygwin 版本跟 NTFS 完全兼容,所以不用担心,可以放
3、心的把它装在 NTFS 分区。至于 Test File Type ,建议最好设成 unix ,虽然我没试过用 dos 格式,但是鉴于 OpenSource 的软件原本都是 linux/unix 下的,所以最好还是用 unix继续下一步选择一个保存package 的地方,我们要用到的package 大小大概是60M 。当然,如果选择的是InstallFrom LocalDirectory ,那么这一步就会变成“指定 package所在的位置 ”下一步指定代理服务器。教育网内的机器是没办法直接上国外网的,所以要指定代理。最该死的是它的 mirror li st 放在国外,所以即使你知道一个国内的
4、ftp 地址(可以下载 package 的地址,比如 /cygwin ),你也得指定代理服务器,要不然你就没办法获得mirrorlist ,安装就进行不下去。清华校内的话,除实验室之外推荐使用代理,强烈建议不要直接连国外,要知道国际流量可是1 元 /MB ,安装一次就需要60RMB !下一步选择镜像站点。 cygwin 有很多镜像站点(但是上面列的都是国外的),可以选择其中一个下载 package 也可以自己指定一个站点。 比如,如果要用 /cygwin ,可以在 User URL 中填这个地址,然后点 add ,
5、就能将这个地址加到上面的镜像列表中,然后可以选择这个镜像进行安装。下一步选择要安装的软件包。这里我只列出ns2 需要的包 ,其中不包括安装程序默认安装的包:gccgcc-g+gnuplot个人收集整理勿做商业用途makepatchperltarX-startup-scriptsxorg-x11-basexorg-x11-binxorg-x11-develxorg-x11-bin-dllsxorg-x11-bin-lndirxorg-x11-etcxorg-x11-fencxorg-x11-fntsxorg-x11-libs-dataxorg-x11-xwin点右上角的view ,使它旁边的状态
6、显示为Full ,你就能看到按字母顺序排序的package 列表,在这些包前点鼠标,使它们处于非“Skip的”状态下一步开始下载文件,准备安装。下载过程会比较慢,因为总文件有60 多 M,且分成很多小文件。如果是代理服务器,可能还会更慢,推荐早上开机安装,然后去上自习,估计中午就能下完了:-P下载完成后,系统会自动开始安装安装过程还是比较慢的,耐心等待就是了安装完成让人高兴的提示到这里, cygwin 安装完成,这时桌面上应该出现了一个cygwin 的图标,点击运行,就能看到cygwin 的界面了接下来就是安装ns2 了先去/nsnam/dist/ns-all
7、inone-2.28.tar.gz下载 ns-allinone安装包。当然也可以选择下载单独的包,然后一个一个安装,不过真的不推荐,因为太麻烦了下载完后,用winrar (我确定 winzip 能不能解压tar 格式的文件,谁试试,告诉我一声)把里面的文件都个人收集整理勿做商业用途解压到cygwin 安装目录下的home 目录的子目录下,比如在我这里就是c:cygwinhomehct。启动 cygwin ,cd /home/hct/ns-allinone-2.28./install安装过程就开始了。由于目录不一样,上面的命令可能不太一样。安装过程是很漫长的,因为我们下载的是源文件,机器还得先编
8、译,等吧安装完后会出现这个提示:这时还需要修改路径信息,把可执行文件的路径加到PATH 环境变量中打开c:cygwinhomehct.bashrc(当然,根据安装路径不同,这个文件所处的位置也不同),在文件末尾加入这些信息:exportNS_HOME=/home/hct/ns-allinone-2.28exportPATH=$NS_HOME/nam-1.11:$NS_HOME/tcl8.4.5/unix:$NS_HOME/tk8.4.5/unix:$NS_HOME/bin:$PATHexportLD_LIBRARY_PATH=$NS_HOME/tcl8.4.5/unix:$NS_HOME/tk
9、8.4.5/unix:$NS_HOME/otcl-1.9:$NS_HOME/lib:$LD_LIBRARY_PATHexportTCL_LIBRARY=$NS_HOME/tcl8.4.5/library.bashrc 文件可以用记事本打开,不过最好用UE,因为它是unix 格式的文本加入后的文件像这样:/Test/i1/20051013132448_1dwgbc45_.bashrc现在我们的工作就基本完成了。保存 .bashrc ,打开 cygwin ,运行startxwin.bat这时应该出现这样的窗口:运行cd /home/hct/ns-allinon
10、e-2.28/ns-2.28/ns-tutorial/examplesns example2.tcl应该会出现这样的窗口:这就表示 ns2 安装圆满完成了!Problems& SolutionsP: 运行startxwin.bat时提示 “ NoSuchFile or Directory”个人收集整理勿做商业用途S:可能是没有安装X-Startup-Scripts,重新运行setup.exe ,然后选择安装就行了也可能是环境变量没有设置好,按上面的设置再检查一遍,注意要把hct 改成你相应的名字另外,应该运行startxwin.bat,不能只打startxwinP: 运行ns examples
11、2.tcl时提示 no such file or directoryS: 如果是找不到examples2.tcl那就是你打cd /home/hct/ns-allinone-2.28/ns-2.28/ns-tutorial/examples 的时候出了错如果是找不到ns,那就是环境变量没设置好P: 运行ns examples2.tcl时提示 “ nam: no suchfile or directory”S: 看看你的 /home/hct/ns-allinone-2.28/nam-1.11 目录下有没有 nam.exe 文件,有的话就是你的环境变量设置错了,注意要把 nam-1.11 这个目录加
12、到 PATH 中如果没有nam.exe ,那就是编译nam 时出错了。 运行 gcc-dumpversion看看你的 gcc 版本,如果是 3.4.x ,那就好办了。 找到nam-1.11/agent.h,把它的第运行 ./configure然后运行make ,等运行完毕,再试试73 行中的 NULL 改成 0, 然后回到 nam-1.11ns example2.tcl就应该没问题了目录,如果运行 ./configure 结束后,最后一行提示cantfind X include ,运行make后报错“ xwd.c:87:29: X11/Xmu/WinUtil.h: No such file o
13、r directorymake: * xwd.o Error 1”那就只好去/nsnam/dist/binary/下一个nam-1.0alla-win32.exe,然后把文件名改为nam.exe ,复制到C:cygwinhomehctns-allinone-2.28bin下了。如果 gcc 版本不是3.4.x ,那就不知道是什么问题了,不过可以肯定是编译出了错,所以换个nam 版本试试吧References:/docs/ug/setup-cygwin-x-installing.html0/
14、smallko/ns2/setup.htm概述GCC ( GNU Compiler Collection, GNU 编译器套装),是一套由GNU开发的编程语言编译器。它是一套GNU 编译器套装GNU 编译器套装以 GPL及 LGPL许可证所发行的自由软件,也是GNU 计划的关键部分,亦是自由的类Unix 及苹果电脑 Mac OS X操作系统的标准编译器。GCC原名为GNU C语言编译器,因为它原本只能处理C 语言。GCC很快地扩展,变得可处理C+ 。之后也变得可处理Fortran、Pascal 、Objective-C、Java,以及Ada与其他语言。个人收集整理勿做商业用途顺义GCC 俱乐部
15、结构GCC 的外部接口长得像一个标准的Unix 编译器。使用者在命令列下键入gcc 之程序名,以及一些命令参数,以便决定每个输入档案使用的个别语言编译器,并为输出程序码使用适合此硬件平台的组合语言编译器,并且选择性地执行连结器以制造可执行的程序。每个语言编译器都是独立程序,此程序可处理输入的原始码,并输出组合语言码。全部的语言编译器都拥有共通的中介架构:一个前端解析符合此语言的原始码,并产生一抽象语法树,以及一翻译此语法树成为 GCC 的暂存器转换语言 RTL 的后端。编译器最佳化与静态程序码解析技术(例如FORTIFY_SOURCE,一个试图发现缓冲区溢位buffer overflow 的编
16、译器) 在此阶段应用于程序码上。最后,适用于此硬件架构的组合语言程序码以Jack Davidson与 Chris Fraser发明的算法产出。几乎全部的GCC 都由 C 写成,除了Ada 前端大部分以Ada 写成。前端接口前端的功能在于产生一个可让后端处理之语法树。此语法解析器是手写之递回语法解析器。直到最近,程序的语法树结构尚无法与欲产出的处理器架构脱钩。而语法树的规则有时在不同的语言前端也不一样,有些前端会提供它们特别的语法树规则。在 2005 年,两种与语言脱钩的新型态语法树纳入 GCC 中。它们称为 GENERIC 与 GIMPLE 。语法解析变成产生与语言相关的暂时语法树, 再将它们
17、转成 GENERIC 。之后再使用 gimplifier 技术降低 GENERIC的复杂结构, 成为一较简单的静态唯一形式(Static Single Assignment form,SSA )基础的 GIMPLE 形式。此形式是一个与语言和处理器架构脱钩的全域最佳化通用语言,适用于大多数的现代编程语言。中介接口一般编译器作者会将语法树的最佳化放在前端,但其实此步骤并不看语言的种类而有不同,且不需要用到语法解析器。 因此 GCC 作者们将此步骤归入通称为中介阶段的部分里。 此类的最佳化包括消解死码、消解重复运算与全域数值重编码等。许多最佳化技巧也正在实作中。个人收集整理勿做商业用途后端接口GC
18、C 后端的行为因不同的前处理器宏和特定架构的功能而不同,例如不同的字符尺寸、呼叫方式与大小尾序等。 后端接口的前半部利用这些讯息决定其RTL 的生成形式, 因此虽然GCC 的 RTL 理论上不受处理器影响,但在此阶段其抽象指令已被转换成目标架构的格式。GCC 的最佳化技巧依其释出版本而有很大不同,但都包含了标准的最佳化算法,例如循环最佳化、执行绪跳跃、共通程序子句消减、指令排程等等。而RTL 的最佳化由于可用的情形较少,且缺乏较高阶的资讯,因此比较起近来增加的GIMPLE 语法树形式 2 ,便显得比较不重要。后端经由一重读取步骤后,利用描述目标处理器的指令集时所取得的资讯,将抽象暂存器替换成处
19、理器的真实暂存器。此阶段非常复杂,因为它必须关照所有 GCC 可移植平台的处理器指令集的规格与技术细节。后端的最后步骤相当公式化,仅仅将前一阶段得到的组合语言码藉由简单的副函式转换其暂存器与内存位置成相对应的机械码。基本规则gcc 所遵循的部分约定规则:.c 为后缀的文件,C 语言源代码文件;.a 为后缀的文件,是由目标文件构成的档案库文件;.C, .cc 或 .cxx 为后缀的文件,是C+ 源代码文件;.h 为后缀的文件,是程序所包含的头文件;.i 为后缀的文件,是已经预处理过的C 源代码文件;.ii 为后缀的文件,是已经预处理过的C+ 源代码文件;.m 为后缀的文件,是Objective-
20、C源代码文件;.o 为后缀的文件,是编译后的目标文件;个人收集整理勿做商业用途.s 为后缀的文件,是汇编语言源代码文件;.S 为后缀的文件,是经过预编译的汇编语言源代码文件。执行过程虽然我们称 Gcc 是 C 语言的编译器,但使用 gcc 是编译的过程, 而是要经历四个相互关联的步骤预处理由 C 语言源代码文件生成可执行文件的过程不仅仅(也称预编译, Preprocessing)、编译 (Compilation)、汇编 (Assembly) 和链接 (Linking) 。命令 gcc 首先调用 cpp 进行预处理,在预处理过程中,对源代码文件中的文件包含 (include) 、预编译语句 (如
21、宏定义 define 等)进行分析。接着调用 cc1 进行编译,这个阶段根据输入文件生成以 .o 为后缀的目标文件。汇编过程是针对汇编语言的步骤,调用 as 进行工作,一般来讲, .S 为后缀的汇编语言源代码文件和汇编、 .s 为后缀的汇编语言文件经过预编译和汇编之后都生成以 .o 为后缀的目标文件。当所有的目标文件都生成之后, gcc 就调用 ld 来完成最后的关键性工作,这个阶段就是连接。在连接阶段,所有的目标文件被安排在可执行程序中的恰当的位置,同时,该程序所调用到的库函数也从各自所在的档案库中连到合适的地方。基本用法在使用 Gcc 编译器的时候,我们必须给出一系列必要的调用参数和文件名
22、称。GCC 编译器的调用参数大约有 100 多个,其中多数参数我们可能根本就用不到,这里只介绍其中最基本、最常用的参数。GCC 最基本的用法是gcc options filenames其中 options 就是编译器所需要的参数,filenames 给出相关的文件名称。-c,只编译,不连接成为可执行文件,编译器只是由输入的.c 等源代码文件生成.o 为后缀的目标文件,通常用于编译不包含主程序的子程序文件。-o output_filename,确定输出文件的名称为果不给出这个选项,gcc 就给出预设的可执行文件output_filenamea.out 。,同时这个名称不能和源文件同名。如-g ,
23、产生符号调试工具(GNU 的 gdb) 所必要的符号资讯,要想对源代码进行调试,我们就必须加入这个选项。个人收集整理勿做商业用途-O,对程序进行优化编译、连接,采用这个选项,整个源代码会在编译、连接过程中进行优化处理,这样产生的可执行文件的执行效率可以提高,但是,编译、连接的速度就相应地要慢一些。-O2 ,比 -O 更好的优化编译、连接,当然整个编译、连接过程会更慢。-Idirname ,将 dirname 所指出的目录加入到程序头文件目录列表中,是在预编译过程中使用的参数。C 程序中的头文件包含两种情况A)#include B)#include“myinc.h ”其中, A 类使用尖括号 (
24、) ,B 类使用双引号 ( “ 。”)对于 A 类,预处理程序cpp 在系统预设包含文件目录 (如 /usr/include) 中搜寻相应的文件,而B 类,预处理程序在目标文件的文件夹内搜索相应文件。GCC 执行过程示例示例代码a.c :#include int main()printf(hellon);预编译过程 :这个过程处理宏定义和include ,并做语法检查。可以看到预编译后,代码从5 行扩展到了910 行。个人收集整理勿做商业用途gcc -E a.c -o a.icat a.c | wc -l5cat a.i | wc -l910编译过程 :这个阶段,生成汇编代码。gcc -S a
25、.i -o a.scat a.s | wc -l59汇编过程 :这个阶段,生成目标代码。此过程生成ELF 格式的目标代码。gcc -c a.s -o a.ofile a.oa.o: ELF 64-bit LSB relocatable, AMD x86-64, version 1 (SYSV), not stripped链接过程 :链接过程。生成可执行代码。链接分为两种,一种是静态链接,另外一种是动态链接。使用静态链接的好处是,依赖的动态链接库较少,对动态链接库的版本不会很敏感,具有较好的兼容性;缺点是生成的程序比较大。使用动态链接的好处是,生成的程序比较小,占用较少的内存。个人收集整理勿做商
26、业用途gcc a.o -o a程序运行:./ahelloGCC 编译简单例子编写如下代码:#include int main()printf(hello,world!n);执行情况如下:gcc -E hello.c -o hello.igcc -S hello.i -o hello.sgcc -c hello.s -o hello.ogcc hello.c -o hello./hellohello,world!个人收集整理勿做商业用途目前支持的语言以 2006 年 5 月 24 日释出的 4.1.1 版为准,本编译器版本可处理下列语言:Ada GNAT C GCC C+ ( G+ )Fortr
27、anFortran 77: G77, Fortran 90: GFORTRANJava编译器: GCJ ;解释器: GIJ Objective-CGOBJC Objective-C+先前版本纳入的CHILL 前端由于缺乏维护而被废弃。Fortran 前端在 4.0 版之前是 G77 ,此前端仅支援Fortran 77 。在本版本中, G77 被废弃而采用更新的GFortran ,因为此前端支援Fortran 95 。下列前端依然存在:Modula-2Modula-3PascalPL/ID 语言Mercury个人收集整理勿做商业用途VHDL支援的处理器架构GCC 目前支援下列处理器架构(以4.1
28、 版为准):AlphaARMAtmel AVRBlackfinH8/300IA-32 x86 与 x86-64IA-64 例如: ItaniumMorphoSys家族Motorola 68000Motorola 88000MIPSPA-RISCPDP-11PowerPCSystem/370 ,System/390个人收集整理勿做商业用途SuperHHC12SPARCVAXRenesas R8C/M16C/M32C家族较不知名的处理器架构也在官方释出版本中支援:A29KARCC4xCRISD30VDSP16xxFR-30FR-VIntel i960IP2000M32R68HC11个人收集整理勿做
29、商业用途MCOREMMIXMN10200MN10300NS32KROMPStormy16V850Xtensa由 FSF 个别维护的GCC 处理器架构:D10VMicroBlazePDP-10MSP430Z8000当 GCC 需要移植到一个新平台上,通常使用此平台固有的语言来撰写其初始阶段。为 GCC 程序除错为 GCC除错的首选工具当然是GNU除错器。其他特殊用途的除错工具是Valgrind,用以发现内存个人收集整理勿做商业用途漏失 (Memory leak) 。而 GNU 测量器此功能需要使用者在编译时选定测量(gprof) profiling可以得知程序中某些函式花费多少时间,选项。以及其
30、呼叫频率;GCC 编译器的使用首先检查是否在你的机器上安装了GCC ,使用命令:可用 rpm -q gcc检查。如果没有安装,请依序检查并安装下面各RPMlibbinutilsbinutilsmakeglibc-develgcc-cppgcc看下面的例子:test.c#includemain() char *str=I like Linux! I advices you jion in the Linux World; printf(%s ,str);exit(0);个人收集整理勿做商业用途使用gcc编译。输入gcc -c test.c得到目标文件test.o.-c命令表示对文件进行编译和汇编
31、。但并不连接。如果再键入gcc -o ./bin/test test.o,那么将得到名为test的可执行文件。其实这两步可以一气呵成,gcc ./bin/test test.c.如果程序没有错误就生成了可执行文件。也许你会觉得基于命令行的编译器比不上如VC之类的集成开发环境,的确gcc的界面要改进,但是你一旦熟练了就会感到。gcc的效率如此之高。可以告诉大家的是Linux底下强大的C/C+ 集成开发环境Kdevelope和 Vc 一样强大,使用了Gcc编译器。GNU C编译器即 gcc是一个功能强大的ANSI C兼容编译器,你会操作其他操作系统下的一种C 编译器,能很快掌握GCC, 我也是学了
32、不久的GCC.1、使用 Gcc,Gcc 是基于命令行的,使用时通常后跟一些选项和文件名。Gcc 的基本用法如下:gccoptions filenames命令行选项制定操作将对命令行上的每个给出的文件执行。2、 GCC 的常用选项编译选项: gcc 有超过 100 个的编译选项可用。具体的可以使用命令man gcc 察看优化选项:用 GCC 编译 C/C+ 代码时,它会试着用最少的时间完成编译并且编译后的代码易于调试。易于调试意味着编译后的代码与源代码有同样的执行顺序,编译后的代码没有经过优化。有很多的选想可以告诉 GCc 在耗费更多编译时间和牺牲易调试性的基础上产生更小更快的可执行文件。 这些
33、选项中最典型的就是 -O 和 -O2 。-O 选项告诉 gcc 对源代码进行基本优化。 -O2 选项告诉 Gcc 产生尽可能小的和尽可能快的代码。还有一些很特殊的选项可以通过 man gcc 察看。调试和剖析选项:GCC 支持数种调试剖析选项。在这些选项中最常用的是产生能被 GNU 调试器(如gdb) 使用的调试信息,以便调试用户的程序。-pg中加入额外的代码,执行时,产生gprof 用的剖析信息以显示程序的耗时情况。-g 和 -pg.-g 选项告诉gcc选项告诉gcc 在用户的程序3、使用 gdb使用方法: 在命令行中健入gdb 并按回车就可以运行gdb 了,启动选项,也可以下面的方式来运行
34、gdb: gdb filename用这种方式运行gdb在命令行上健入gdb -h 得到一个有关gdb 的选项的说明简单列表。gdb 后,能在命令行上制定很多的时,能直接指定想要调试的程序。编译代码以供调试,为了使gdb 工作,必须使程序在编译时包含调试信息,调试信息包含程序里的每个变量的类型,在可执行文件里的地址映射以及源代码的行号。 gdb 利用这些信息使源代码和机器码相关联。个人收集整理勿做商业用途关于 gcc 的大体就写这么多吧,根多的信息可以查找帮助,记得学习Linux 的一大武器man 或者 info命令,下次在介绍一下使用c/C+ 编写大型程序的makefile 文件和 make 命令。个人收集整理勿做商业用途版权申明本文部分内容,包括文字、图片、以及设计等在网上搜集整理。版权为潘宏亮个人所有This artic
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 五年级上册数学教学设计-第三单元第1课时 因数与倍数 北师大版
- 一年级下册数学教案-综合实践 趣味拼摆| 青岛版(五四学制)
- 学习2025年雷锋精神六十二周年主题活动实施方案 (3份)-54
- 2025年河南测绘职业学院单招职业适应性测试题库带答案
- 2025年广西安全工程职业技术学院单招职业技能测试题库含答案
- 2025年广东金融学院单招职业适应性测试题库完整
- 2025年贵州航天职业技术学院单招职业技能测试题库一套
- 2025福建省安全员考试题库及答案
- 2025年度幼儿园教职工被辞退劳动权益保护合同
- 2025年度幼儿园实习教师培养与就业服务协议
- 安徽华星化工有限公司杀虫单废盐资源化处理项目环境影响报告书
- 平安健康文明主题班会
- 消防工程管理办法附流程图
- 雨水管道中粗砂回填
- 金庸群侠传x最完整攻略(实用排版)
- 团意操作流程详解课件
- SH/T 0356-1996燃料油
- GB/T 9846.4-2004胶合板第4部分:普通胶合板外观分等技术条件
- GB/T 17836-1999通用航空机场设备设施
- GB/T 13012-2008软磁材料直流磁性能的测量方法
- 2023年全国高中生物联赛竞赛试题和答案
评论
0/150
提交评论