代码空间


摘要(Abstract)

Redmine是用Ruby开发的基于web的项目管理软件,是用ROR框架开发的一套跨平台项目管理系统,据说是源于Basecamp的ror版而来,支持多种数据库,有不少自己独特的功能,例如提供wiki、新闻台等,还可以集成其他版本管理系统和BUG跟踪系统,例如Perforce、SVN、CVS、TD等等。这种 Web 形式的项目管理系统通过“项目(Project)”的形式把成员、任务(问题)、文档、讨论以及各种形式的资源组织在一起,大家参与更新任务、文档等内容来推动项目的进度,同时系统利用时间线索和各种动态的报表形式来自动给成员汇报项目进度。多项目和子项目支持 ● 里程碑版本跟踪 ● 可配置的用户角色控制 ● 可配置的问题追踪系统 ● 自动日历和甘特图绘制 ● 支持 Blog 形式的新闻发布、Wiki 形式的文档撰写和文件管理 ● RSS 输出和邮件通知 ● 每个项目可以配置独立的 Wiki 和论坛模块 ● 简单的任务时间跟踪机制 ● 用户、项目、问题支持自定义属性 ● 支持多 LDAP 用户认证 ● 支持用户自注册和用户激活 ● 多语言支持(已经内置了zh简体中文) ● 多数据库支持(MySQL、SQLite、PostgreSQL) ● 外观模版化定制(可以使用 Basecamp 、Ruby安装) 项目论坛 简单实时跟踪功能 SCM in集成 (SVN, CVS, Git, Mecuial, Bazaa and Dacs)


主题(Topic)

项目(Project)
lucasjohnston/DockDestroyer killall-q/SpectrumFFT killall-q/HoloFFT killall-q/Hologram ~/somefile 从上面备份的安装包的列表文件恢复所有包 #dpkg –set-selections < ~/somefile sudo dselect 清理旧版本的软件缓存 #sudo apt-get autoclean 清理所有软件缓存 #sudo apt-get clean 删除系统不再使用的孤立软件 #sudo apt-get autoremove 查看包在服务器上面的地址 #apt-get -qq –print-uris install ssh | cut -d"’ -f2 ------------------------------------------------系统------------------------------------------------ 查看内核 #uname -a 查看Ubuntu版本 #cat /etc/issue 查看内核加载的模块 #lsmod 查看PCI设备 #lspci 查看USB设备 #lsusb 查看网卡状态 #sudo ethtool eth0 查看CPU信息 #cat /proc/cpuinfo 显示当前硬件信息 #lshw ------------------------------------------------硬盘------------------------------------------------ 查看硬盘的分区 #sudo fdisk -l 查看IDE硬盘信息 #sudo hdparm -i /dev/hda 查看STAT硬盘信息 #sudo hdparm -I /dev/sda 或 #sudo apt-get install blktool #sudo blktool /dev/sda id 查看硬盘剩余空间 #df -h #df -H 查看目录占用空间 #du -hs 目录名 优盘没法卸载 #sync fuser -km /media/usbdisk ------------------------------------------------内存------------------------------------------------ 查看当前的内存使用情况 #free -m 进程查看当前有哪些进程 #ps -A 中止一个进程 #kill 进程号(就是ps -A中的第一列的数字) 或者 killall 进程名 强制中止一个进程(在上面进程中止不成功的时候使用) #kill -9 进程号 或者 killall -9 进程名 图形方式中止一个程序 #xkill 出现骷髅标志的鼠标,点击需要中止的程序即可 查看当前进程的实时状况 #top 查看进程打开的文件 #lsof -p ADSL 配置 ADSL #sudo pppoeconf ADSL手工拨号 #sudo pon dsl-provider 激活 ADSL #sudo /etc/ppp/pppoe_on_boot 断开 ADSL #sudo poff 查看拨号日志 #sudo plog 如何设置动态域名 #首先去http://www.3322.org申请一个动态域名 #然后修改 /etc/ppp/ip-up 增加拨号时更新域名指令 sudo vim /etc/ppp/ip-up #在最后增加如下行 w3m -no-cookie -dump ------------------------------------------------网络------------------------------------------------ 根据IP查网卡地址 #arping IP地址 查看当前IP地址 #ifconfig eth0 |awk ‘/inet/ {split($2,x,”:”);print x[2]}’ 查看当前外网的IP地址 #w3m -no-cookie -dumpwww.edu.cn|grep-o‘[0-9]"{1,3"}".[0-9]"{1,3"}".[0-9]"{1,3"}".[0-9]"{1,3"}’ #w3m -no-cookie -dumpwww.xju.edu.cn|grep-o’[0-9]"{1,3"}".[0-9]"{1,3"}".[0-9]"{1,3"}".[0-9]"{1,3"}’ #w3m -no-cookie -dump ip.loveroot.com|grep -o’[0-9]"{1,3"}".[0-9]"{1,3"}".[0-9]"{1,3"}".[0-9]"{1,3"}’ 查看当前监听80端口的程序 #lsof -i :80 查看当前网卡的物理地址 #arp -a | awk ‘{print $4}’ ifconfig eth0 | head -1 | awk ‘{print $5}’ 立即让网络支持nat #sudo echo 1 > /proc/sys/net/ipv4/ip_forward #sudo iptables -t nat -I POSTROUTING -j MASQUERADE 查看路由信息 #netstat -rn sudo route -n 手工增加删除一条路由 #sudo route add -net 192.168.0.0 netmask 255.255.255.0 gw 172.16.0.1 #sudo route del -net 192.168.0.0 netmask 255.255.255.0 gw 172.16.0.1 修改网卡MAC地址的方法 #sudo ifconfig eth0 down 关闭网卡 #sudo ifconfig eth0 hw ether 00:AA:BB:CC:DD:EE 然后改地址 #sudo ifconfig eth0 up 然后启动网卡 统计当前IP连接的个数 #netstat -na|grep ESTABLISHED|awk ‘{print $5}’|awk -F: ‘{print $1}’|sort|uniq -c|sort -r -n #netstat -na|grep SYN|awk ‘{print $5}’|awk -F: ‘{print $1}’|sort|uniq -c|sort -r -n 统计当前20000个IP包中大于100个IP包的IP地址 #tcpdump -tnn -c 20000 -i eth0 | awk -F “.” ‘{print $1″.”$2″.”$3″.”$4}’ | sort | uniq -c | sort -nr | awk ‘ $1 > 100 ‘ 屏蔽IPV6 #echo “blacklist ipv6″ | sudo tee /etc/modprobe.d/blacklist-ipv6 ------------------------------------------------服务------------------------------------------------ 添加一个服务 #sudo update-rc.d 服务名 defaults 99 删除一个服务 #sudo update-rc.d 服务名 remove 临时重启一个服务 #/etc/init.d/服务名 restart 临时关闭一个服务 #/etc/init.d/服务名 stop 临时启动一个服务 #/etc/init.d/服务名 start ------------------------------------------------设置------------------------------------------------ 配置默认Java使用哪个 #sudo update-alternatives –config java 修改用户资料 #sudo chfn userid 给apt设置代理 #export http_proxy=http://xx.xx.xx.xx:xxx 修改系统登录信息 #sudo vim /etc/motd ------------------------------------------------中文------------------------------------------------ 转换文件名由GBK为UTF8 #sudo apt-get install convmv convmv -r -f cp936 -t utf8 –notest –nosmart * 批量转换src目录下的所有文件内容由GBK到UTF8 #find src -type d -exec mkdir -p utf8/{} "; find src -type f -exec iconv -f GBK -t UTF-8 {} -o utf8/{} "; mv utf8/* src rm -fr utf8 转换文件内容由GBK到UTF8 #iconv -f gbk -t utf8 $i > newfile 转换 mp3 标签编码 #sudo apt-get install python-mutagen find . -iname “*.mp3” -execdir mid3iconv -e GBK {} "; 控制台下显示中文 #sudo apt-get install zhcon 使用时,输入zhcon即可 ------------------------------------------------文件------------------------------------------------ 快速查找某个文件 #whereis filename #find 目录 -name 文件名 查看文件类型 #file filename 显示xxx文件倒数6行的内容 #tail -n 6 xxx 让tail不停地读地最新的内容 #tail -n 10 -f /var/log/apache2/access.log 查看文件中间的第五行(含)到第10行(含)的内容 #sed -n ‘5,10p’ /var/log/apache2/access.log 查找包含xxx字符串的文件 #grep -l -r xxx . 全盘搜索文件(桌面可视化) gnome-search-tool 查找关于xxx的命令 #apropos xxx man -k xxx 通过ssh传输文件 #scp -rp /path/filenameusername@remoteIP:/path #将本地文件拷贝到服务器上 #scp -rpusername@remoteIP:/path/filename/path #将远程文件从服务器下载到本地 查看某个文件被哪些应用程序读写 #lsof 文件名 把所有文件的后辍由rm改为rmvb #rename ’s/.rm$/.rmvb/’ * 把所有文件名中的大写改为小写 #rename ‘tr/A-Z/a-z/’ * 删除特殊文件名的文件,如文件名:–help.txt #rm — –help.txt 或者 rm ./–help.txt 查看当前目录的子目录 #ls -d */. 或 echo */. 将当前目录下最近30天访问过的文件移动到上级back目录 #find . -type f -atime -30 -exec mv {} ../back "; 将当前目录下最近2小时到8小时之内的文件显示出来 #find . -mmin +120 -mmin -480 -exec more {} "; 删除修改时间在30天之前的所有文件 #find . -type f -mtime +30 -mtime -3600 -exec rm {} "; 查找guest用户的以avi或者rm结尾的文件并删除掉 #find . -name ‘*.avi’ -o -name ‘*.rm’ -user ‘guest’ -exec rm {} "; 查找的不以java和xml结尾,并7天没有使用的文件删除掉 #find . ! -name *.java ! -name ‘*.xml’ -atime +7 -exec rm {} "; 统计当前文件个数 #ls /usr/bin|wc -w 统计当前目录个数 #ls -l /usr/bin|grep ^d|wc -l 显示当前目录下2006-01-01的文件名 #ls -l |grep 2006-01-01 |awk ‘{print $8}’ ------------------------------------------------FTP------------------------------------------------ 上传下载文件工具-filezilla #sudo apt-get install filezilla filezilla无法列出中文目录? 站点->字符集->自定义->输入:GBK 本地中文界面 1)下载filezilla中文包到本地目录,如~/ 2)#unrar x Filezilla3_zhCN.rar 3) 如果你没有unrar的话,请先安装rar和unrar #sudo apt-get install rar unrar #sudo ln -f /usr/bin/rar /usr/bin/unrar 4)先备份原来的语言包,再安装;实际就是拷贝一个语言包。 #sudo cp /usr/share/locale/zh_CN/filezilla.mo /usr/share/locale/zh_CN/filezilla.mo.bak #sudo cp ~/locale/zh_CN/filezilla.mo /usr/share/locale/zh_CN/filezilla.mo 5)重启filezilla,即可! --------------------------------------解压缩--------------------------------------------- 解压缩 xxx.tar.gz #tar -zxvf xxx.tar.gz 解压缩 xxx.tar.bz2 #tar -jxvf xxx.tar.bz2 压缩aaa bbb目录为xxx.tar.gz #tar -zcvf xxx.tar.gz aaa bbb 压缩aaa bbb目录为xxx.tar.bz2 #tar -jcvf xxx.tar.bz2 aaa bbb 解压缩 RAR 文件 1) 先安装 #sudo apt-get install rar unrar #sudo ln -f /usr/bin/rar /usr/bin/unrar 2) 解压 #unrar x aaaa.rar 解压缩 ZIP 文件 1) 先安装 #sudo apt-get install zip unzip #sudo ln -f /usr/bin/zip /usr/bin/unzip 2) 解压 #unzip x aaaa.zip Nautilus 显示隐藏文件 Ctrl+h 显示地址栏 Ctrl+l 特殊 URI 地址 * computer:/// - 全部挂载的设备和网络 * network:/// - 浏览可用的网络 * burn:/// - 一个刻录 CDs/DVDs 的数据虚拟目录 * smb:/// - 可用的 windows/samba 网络资源 * x-nautilus-desktop:/// - 桌面项目和图标 *file:///- 本地文件 * trash:/// - 本地回收站目录 * ftp:// - FTP 文件夹 * ssh:// - SSH 文件夹 * fonts:/// - 字体文件夹,可将字体文件拖到此处以完成安装 * themes:/// - 系统主题文件夹 查看已安装字体 在nautilus的地址栏里输入”fonts:///“,就可以查看本机所有的fonts --------------------------------------程序 -------------------------------------- 详细显示程序的运行信息 #strace -f -F -o outfile 日期和时间 设置日期 #date -s mm/dd/yy 设置时间 #date -s HH:MM 将时间写入CMOS #hwclock –systohc 读取CMOS时间 #hwclock –hctosys 从服务器上同步时间 #sudo ntpdate time.nist.gov #sudo ntpdate time.windows.com 控制台 不同控制台间切换 Ctrl + ALT + ← Ctrl + ALT + → 指定控制台切换 Ctrl + ALT + Fn(n:1~7) 控制台下滚屏 SHIFT + pageUp/pageDown 控制台抓图 #setterm -dump n(n:1~7) --------------------------------------数据库 -------------------------------------- mysql的数据库存放在地方 #/var/lib/mysql 从mysql中导出和导入数据 #mysqldump 数据库名 > 文件名 #导出数据库 #mysqladmin create 数据库名 #建立数据库 #mysql 数据库名 < 文件名 #导入数据库 忘了mysql的root口令怎么办 #sudo /etc/init.d/mysql stop #sudo mysqld_safe –skip-grant-tables #sudo mysqladmin -u user password ‘newpassword” #sudo mysqladmin flush-privileges 修改mysql的root口令 #sudo mysqladmin -uroot -p password ‘你的新密码’ --------------------------------------其它 -------------------------------------- 下载网站文档 #wget -r -p -np -khttp://www.21cn.com · r:在本机建立服务器端目录结构; · -p: 下载显示HTML文件的所有图片; · -np:只下载目标站点指定目录及其子目录的内容; · -k: 转换非相对链接为相对链接。 如何删除Totem电影播放机的播放历史记录 #rm ~/.recently-used 如何更换gnome程序的快捷键 点击菜单,鼠标停留在某条菜单上,键盘输入任意你所需要的键,可以是组合键,会立即生效; 如果要清除该快捷键,请使用backspace vim 如何显示彩色字符 #sudo cp /usr/share/vim/vimcurrent/vimrc_example.vim /usr/share/vim/vimrc 如何在命令行删除在会话设置的启动程序 #cd ~/.config/autostart rm 需要删除启动程序 如何提高wine的反应速度 #sudo sed -ie ‘/GBK/,/^}/d’ /usr/share/X11/locale/zh_CN.UTF-8/XLC_LOCALE #chgrp [语法]: chgrp [-R] 文件组 文件… [说明]: 文件的GID表示文件的文件组,文件组可用数字表示, 也可用一个有效的组名表示,此命令改变一个文件的GID,可参看chown。 -R 递归地改变所有子目录下所有文件的存取模式 [例子]: #chgrp group file 将文件 file 的文件组改为 group #chmod [语法]: chmod [-R] 模式 文件… 或 chmod [ugoa] {+|-|=} [rwxst] 文件… [说明]: 改变文件的存取模式,存取模式可表示为数字或符号串,例如: #chmod nnnn file , n为0-7的数字,意义如下: 4000 运行时可改变UID 2000 运行时可改变GID 1000 置粘着位 0400 文件主可读 0200 文件主可写 0100 文件主可执行 0040 同组用户可读 0020 同组用户可写 0010 同组用户可执行 0004 其他用户可读 0002 其他用户可写 0001 其他用户可执行 nnnn 就是上列数字相加得到的,例如 chmod 0777 file 是指将文件 file 存取权限置为所有用户可读可写可执行。 -R 递归地改变所有子目录下所有文件的存取模式 u 文件主 g 同组用户 o 其他用户 a 所有用户 + 增加后列权限 - 取消后列权限 = 置成后列权限 r 可读 w 可写 x 可执行 s 运行时可置UID t 运行时可置GID [例子]: #chmod 0666 file1 file2 将文件 file1 及 file2 置为所有用户可读可写 #chmod u+x file 对文件 file 增加文件主可执行权限 #chmod o-rwx 对文件file 取消其他用户的所有权限 #chown [语法]: chown [-R] 文件主 文件… [说明]: 文件的UID表示文件的文件主,文件主可用数字表示, 也可用一个有效的用户名表示,此命令改变一个文件的UID,仅当此文件的文件主或超级用户可使用。 -R 递归地改变所有子目录下所有文件的存取模式 [例子]: #chown mary file 将文件 file 的文件主改为 mary #chown 150 file 将文件 file 的UID改为150 Ubuntu命令行下修改网络配置 以eth0为例 1. 以DHCP方式配置网卡 编辑文件/etc/network/interfaces: #sudo vi /etc/network/interfaces 并用下面的行来替换有关eth0的行: # The primary network interface - use DHCP to find our address auto eth0 iface eth0 inet dhcp 用下面的命令使网络设置生效: #sudo /etc/init.d/networking restart 当然,也可以在命令行下直接输入下面的命令来获取地址 #sudo dhclient eth0 2. 为网卡配置静态IP地址 编辑文件/etc/network/interfaces: #sudo vi /etc/network/interfaces 并用下面的行来替换有关eth0的行: # The primary network interface auto eth0 iface eth0 inet static address 192.168.3.90 gateway 192.168.3.1 netmask 255.255.255.0 network 192.168.3.0 broadcast 192.168.3.255 将上面的ip地址等信息换成你自己就可以了. 用下面的命令使网络设置生效: #sudo /etc/init.d/networking restart 3. 设定第二个IP地址(虚拟IP地址) 编辑文件/etc/network/interfaces: #sudo vi /etc/network/interfaces 在该文件中添加如下的行: auto eth0:1 iface eth0:1 inet static address 192.168.1.60 netmask 255.255.255.0 network x.x.x.x broadcast x.x.x.x gateway x.x.x.x 根据你的情况填上所有诸如address,netmask,network,broadcast和gateways等信息. 用下面的命令使网络设置生效: #sudo /etc/init.d/networking restart 4. 设置主机名称(hostname) 使用下面的命令来查看当前主机的主机名称: #sudo /bin/hostname 使用下面的命令来设置当前主机的主机名称: #sudo /bin/hostname newname 系统启动时,它会从/etc/hostname来读取主机的名称. 5. 配置DNS 首先,你可以在/etc/hosts中加入一些主机名称和这些主机名称对应的IP地址,这是简单使用本机的静态查询. 要访问DNS 服务器来进行查询,需要设置/etc/resolv.conf文件. 假设DNS服务器的IP地址是192.168.3.2, 那么/etc/resolv.conf文件的内容应为: search test.com nameserver 192.168.3.2 --------------------------------------安装AMP服务 -------------------------------------- 如果采用Ubuntu Server CD开始安装时,可以选择安装,这系统会自动装上apache2,php5和mysql5。下面主要说明一下如果不是安装的Ubuntu server时的安装方法。 用命令在Ubuntu下架设Lamp其实很简单,用一条命令就完成。在终端输入以下命令: #sudo apt-get install apache2 mysql-server php5 php5-mysql php5-gd #phpmyadmin 装好后,mysql管理员是root,无密码,通过http://localhost/phpmyadmin就可以访问mysql了 修改 MySql 密码 终端下输入: #mysql -u root #mysql> GRANT ALL PRIVILEGES ON *.* TO root@localhost IDENTIFIED BY “123456″; ’123456‘是root的密码,可以自由设置,但最好是设个安全点的。 #mysql> quit; 退出mysql apache2的操作命令 启动:#sudo /etc/init.d/apache2 start 重启:#sudo /etc/init.d/apache2 restart 关闭:#sudo /etc/init.d/apache2 stop apache2的默认主目录:/var/www/" class="topic-tag topic-tag-link"> Linux- 显示用户   48. 杀掉进程: kill pid   49. 强制杀掉: killall 等等。 ###什么是开源软件,开源社区有哪些,开源软件有什么优势和劣势? 开源软件即开放源代码软件,其源码可以被公众使用,并且此软件的使用,修改和分发也不受许可证的限制。 开源社区包括开源中国、GoogleCode、GitHub、SourceForge、CodeProject、Apache、ChinaUnix、CodePlex、LUPA、Linux中文社区、51开源社区、Open-Open等。 开源软件优点是免费,代码开放,方便其他程序员编辑;缺点是安全性得不到保障。 ###为什么要有版本控制,git都有哪些操作,和GitHub有什么关系? 版本控制可以保证修改文件或代码时不破坏掉修改前的状态;发布软件的时候很多时候会有多个版本,而生成软件的源代码却往往只有一份,只是在最后编译生成的时候用到不同的部分,大部分代码还是共用的,所以往往需要版本控制,几个版本复制几个文件夹出来。 git update-index –-skip-worktree [file] 可以实现修改本地文件不会被提交,但又可以拉取最新更改的需求。 git update-index --no-assume-unchanged重新跟踪 pretty=oneline 每个提交日志信息只显示一行 git checkout – readme.txt把readme.txt文件在工作区的修改全部撤销 git reset HEAD readme.txt把暂存区的修改撤销掉,重新放回工作区 git checkout – readme.txt撤销修改,也就是回到版本库的状态 git remote add origin 远程版本库URL:git push -u origin master把本地的master分支和远程的master分支关联起来 git log --graph 命令可以看到分支合并图 等等。 git是软件,它可在本地建立仓库,你写的代码的各个版本都可以存储,github是网上仓库,你写的代码的各个版本都可以存储。 Tom之所以把网站叫做Github,是因为其核心部分版本控制是用Git来处理的。gitHub是一个面向开源及私有软件项目的托管平台, 因为只支持git 作为唯一的版本库格式进行托管,故名gitHub。 ###ARM架构处理器都有哪些,有什么特点,处理器的结构都有哪些,有哪些特点? ARMv7架构的Cortex-A5,A7,A8,A9,A12,A15,ARMv8架构的Cortex-A53,A57,A72。 1、体积小、低功耗、低成本、高性能;   2、支持Thumb(16位)/ARM(32位)双指令集,能很好的兼容8位/16位器件;   3、大量使用寄存器,指令执行速度更快;   4、大多数数据操作都在寄存器中完成;   5、寻址方式灵活简单,执行效率高;   6、指令长度固定。 CPU从逻辑上可以划分成3个模块,分别是控制单元、运算单元和存储单元。逻辑单元包括指令寄存器、指令译码器、控制单元、寄存器、逻辑运算单元(ALU)、预取单元、总线单元、数据高速缓存。 AMD的CPU特点是核心数量多,单核性能低,功耗比较高,性价比比较高;英特尔的CPU的特点是,核心数量少,单核性能强,所以对于绝大多数游戏来说都比AMD的表现要好,功耗低,发热低,比较主流。 ###为什么在路由器中可以安装Linux,在路由器中使用的Linux和在桌面端使用的有什么区别? Linux支持路由器功能,如OpenWrt、LEDE,都是基于Linux的路由器系统。 ###为什么要有操作系统? 操作系统是一种驱动程序。让人们不需要关心一些硬件细节,就可以使用硬件。 可享使用硬件资源;为使用者指定一些规范,让不同的使用者可以共享使用硬件。 操作系统就是为了让人们更加方便的使用硬件资源的一个工具,让我们更好地使用硬件资源各种硬件资源。 ###自己对计算机分层思想的理解。 分层思想主要就是将一个复杂的计算机网络分开管理,各个层实行相应的功能,便于管理,和标准的实行。分层思想是一种模块化设计,总的来说就是为了方便。 ###UART串口通信的层次结构是怎样的? 起始位:先发一个逻辑“0”信号,表示传输的开始 数据位:紧接着起始位,从低位开始传动,发送速率靠时钟确定 停止位:数据位加上这一为使得“1”的位数为偶数(偶校验)或奇数(奇校验),以此来校验数据的正确性 停止位:一个字符数据的结束标 空闲位:处于逻辑“1”状态,表示当前线路没有数据传输。 ###为什么Qt可以跨平台使用而VS不能,C语言的编译步骤是怎样的,常用的编译器有哪些? 针对每一种OS平台,QT都有一套对应的底层类库,而接口是完全一致的,因此只要是在QT库上开发的程序,放在任何一种平台下都可以编译运行。 【第一步】编辑hello.c 1 #include 2 #include 3 int main() 4 { 5 printf("hello world!\n"); 6 return 0; 7 } 【第二步】预处理 预处理过程实质上是处理“#”,将#include包含的头文件直接拷贝到hell.c当中;将#define定义的宏进行替换,同时将代码中没用的注释部分删除等。 (1)将所有的#define删除,并且展开所有的宏定义。说白了就是字符替换 (2)处理所有的条件编译指令,#ifdef #ifndef #endif等,就是带#的那些 (3)处理#include,将#include指向的文件插入到该行处 (4)删除所有注释 (5)添加行号和文件标示,这样的在调试和编译出错的时候才知道是是哪个文件的哪一行 (6)保留#pragma编译器指令,因为编译器需要使用它们。 【第三步】编译 (1)词法分析, (2)语法分析 (3)语义分析 (4)优化后生成相应的汇编代码 【第四步】链接 常用的编译器: Cygwin、Mingw32、DJGPP、Dev-C++、GNU C++、MSC 5.0、6.0、7.0、MSQC 1.0、2.5、MSVC 1.0、4.2、6.0、7.0、Visual C++等等。 ###C语言中主函数的返回值可以返回什么东西,主函数的参数又是如何确定的? main函数的返回值用于说明程序的退出状态。如果返回0,则代表程序正常退出。返回其它数字的含义则由系统决定。通常,返回非零代表程序异常退出。返回值为1的时候则代表程序运行遇到问题失败。 主函数的第一个参数是一个整数,它表示第二个参数里的指针个数,主函数的第二个参数是一个字符指针数组,其中每个指针代表一个字符串,所有这些字符串的内容都来自于用户的命令。 argc是命令行总的参数个数,argv[]是argc个参数,其中第0个参数是程序的全名,以后的参数命令行后面跟的用户输入的参数,char *argv[]是一个字符数组,其大小是int argc,主要用于命令行参数, char*envp[]用来取得系统的环境变量。" class="topic-tag topic-tag-link"> xiaoyin998/linux CNTRUN/Termux-command