技术改变世界 阅读塑造人生! - shaogx.com

This string was altered by TechBlog\Plugins\Example.; This is an example to show the potential of an offcanvas layout pattern in Bootstrap. Try some responsive-range viewport sizes to see it in action.

Unix历史

 1.1 历史背景1.1  历史背景... 全文

unix Unix历史 Unix见解 Unix背景 休闲

dos2unix和unix2dos命令使用

dos2unix和unix2dos命令使用dos2unix, unix2dos 用来实现 DOS <=> UNIX text file 转换 aptitude install sysutils 行末: DOS 格式 0d 0a UNIX 格式 0a 可用功能相同的指令組合 dos2unix: sed -i'' "s/\r//" file 或 cat file | col -b > newfile 或 cat file | tr -d "\r" > newfile 或 cat file | tr -d "\015" > newfile unix2dos: sed -i'' "s/$/\r/" file 或 sed -i'' "s/$/\x0d/" file -i后面的是单引号组成 以上适用 GNU sed, FreeBSD 下的 sed 不适用------------------------------------------dos2unix 命令这是一个很简单的命令.功能是将DOS/MAC下的文件转化为UNIX的文本文件格式.用法详见下面.就是这样一个简单的命令折腾了我大半天.我在用mysql查询数据库,执行的批处理放在了一个文件里.如果我执行这个文件,那个存放查询结果的 文件名字总是在后面附加一个?号.而如果我一行一行敲入命令,执行就正常.而且比较了两个文件后没有差别.还有一个奇怪的事情就是总是出现一个类似 "quit"出现mysql语法错误的提示.这个奇怪的现象使我很困惑.后来在一位老大的帮助下想到了是不是由于文件格式的差别.因为我这个文件在 windows下编辑过,后来一试,果然很灵啊.SYNOPSYS       dos2unix [options] [-c convmode] [-o file ...] [-n infile outfile ...]       Options:       [-hkqV] [--help] [--keepdate] [--quiet] [--version]DESCRIPTION       dos2unix, the program that converts plain       text files in DOS/MAC format to UNIX format.OPTIONS       The following options are available:       -h --help              Print online help.       -k --keepdate              Keep the date stamp of output file same as input file.       -q --quiet              Quiet mode. Suppress all warning and messages.       -V --version              Prints version information.       -c --convmode convmode              Sets conversion mode. Where convmode is one of: ASCII, 7bit,              ISO, Mac with ASCII being the default. Simulates dos2unix under              SunOS.-o --oldfile file ...              Old file mode. Convert the file and write output to it. The pro-              gram default to run in this mode. Wildcard names may be used.       -n --newfile infile outfile ...              New file mode. Convert the infile and write output to outfile.              File names must be given in pairs and wildcard names should NOT              be used or you WILL lost your files.EXAMPLES       Get input from stdin and write output to stdout.              dos2unix       Convert and replace a.txt. Convert and replace b.txt.              dos2unix a.txt b.txt              dos2unix -o a.txt b.txt       Convert and replace a.txt in ASCII conversion mode.dos2unix a.txt -c iso b.txt       Convert and replace b.txt in ISO conversion mode.              dos2unix -c ascii a.txt -c iso b.txt       Convert c.txt from Mac to Unix ascii format.              dos2unix -c mac c.txt b.txt       Convert and replace a.txt while keeping original date stamp.              dos2unix -k a.txt              dos2unix -k -o a.txt       Convert a.txt and write to e.txt.              dos2unix -n a.txt e.txt       Convert a.txt and write to e.txt, keep date stamp of e.txt same as       a.txt.              dos2unix -k -n a.txt e.txt       Convert and replace a.txt. Convert b.txt and write to e.txt.              dos2unix a.txt -n b.txt e.txt              dos2unix -o a.txt -n b.txt e.txt       Convert c.txt and write to e.txt. Convert and replace a.txt. Convert       and replace b.txt. Convert d.txt and write to f.txt.              dos2unix -n c.txt e.txt -o a.txt b.txt -n d.txt f.txt  ... 全文

dos2unix unix2dos unix 休闲

dos2unix 和 unix2dos

 [root@www ~]# dos2unix [-kn] file [newfile][root@www ~]# unix2dos [-kn] file [newfile]选项与参数:-k  :保留该档案原本的 mtime 时间格式 (不更新档案上次内容经过修订的时间)-n  :保留原本的旧档,将转换后的内容输出到新档案,如: dos2unix -n old new 范例一:将刚刚上述练习的 /tmp/vitest/man.config 修改成为 dos 断行[root@www ~]# cd /tmp/vitest[root@www vitest]# cp -a /etc/man.config .[root@www vitest]# ll man.config-rw-r--r-- 1 root root 4617 Jan  6  2007 man.config[root@www vitest]# unix2dos -k man.configunix2dos: converting file man.config to DOS format ...# 屏幕会显示上述的讯息,说明断行转为 DOS 格式了![root@www vitest]# ll man.config-rw-r--r-- 1 root root 4758 Jan  6  2007 man.config# 断行字符多了 ^M ,所以容量增加了! 范例二:将上述的 man.config 转成 man.config.linux 的 Linux 断行字符[root@www vitest]# dos2unix -k -n man.config man.config.linuxdos2unix: converting file man.config to file man.config.linux in UNIX format ...[root@www vitest]# ll man.config*-rw-r--r-- 1 root root 4758 Jan  6  2007 man.config-rw------- 1 root root 4617 Jan  6  2007 man.config.linux因为断行字符以及 DOS 与 Linux 操作系统底下一些字符的定义不同,因此, 不建议你在 Windows 系统当中将档案编辑好之后,才上传到 Linux 系统,会容易发生错误问题。 而且,如果你在不同的系统之间复制一些纯文本档案时,千万记得要使用 unix2dos 或 dos2unix 来转换一下断行格式啊!... 全文

dos2unix unix2dos

Unix高级环境编程笔记

本文内容摘自《Unix高级环境编程》第二版,如有错误,请指明,谢谢!Unix标准化:1、ISO C2、IEEE POSIX 可移植的操作系统接口3、Single Unix Specification 单一Unix规范,此标准是对 POSIX.1的扩展。4、FIPS 联邦信息处理标准,此标准对Unix的影响逐渐减小。Unix系统实现:1、SVR42、4.4BSD3、FreeBSD、NetBSD、OpenBSD4、Linux5、Mac OS X6、Solaris7、AIX,IBM版的Unix8、HP-UX,HP版的Unix9、IRIX10、Unix ware,SVR4派生的Unix系统。等... 全文

Unix系统 Unix高级环境编程 Unix标准化

Unix编程艺术——Unix哲学

题外话:一个月之前,刚刚读完《unix编程艺术》这本据说有些“愤青”的书,读书的过程,感觉是种享受,不但unix本身是艺术,连作者著书也是艺术,本想就本书写篇读感,但是感觉现阶段的自己还总结不了书中的精华。昨天,在回家路上无意看见了这篇文章,感觉很好,特转载给大家。出处是http://blog.leezhong.com/reading/2010/12/21/the-art-of-unix-programming.html模块原则 (使用简洁的接口拼合简单的部件)清晰原则 (清晰胜于技巧)组合原则 (设计时考虑拼接组合)Unix程序员偏爱这种做法并不是因为它们仇视视图界面,而是因为如果程序不采用简单的文本输入输出流,它们就极难衔接。把策略同机制揉成一团有两个负面影响:一来会使策略变得死板,难以适应用户需求的改变,二来也意味着任何策略的改变都可能会动摇机制。来自多方面的压力常常会让程序变得复杂(bug更多),其中一种压力就是来自技术上的虚荣心理。Unix程序员相互比的是谁能够做到"简洁而漂亮"并以此为荣。"大"有两重含义:体积大,复杂程度高。程序大了,维护起来就困难。由于人们对花费了大量精力才做出来的东西难以割舍,结果导致在庞大的程序中把投资浪费的注定要失败或者并非最佳的方案上。设计时如果充分考虑到这些要求会给整个项目全过程都带来好处。至少,调试选项的设置应该尽量不要在事后,而应该在设计之初便考虑进去。这是考虑到程序不但应该能够展示其正确性,也应该能够把原开发者解决问题的思维模型告诉后来者。健壮原则 (健壮源于透明与简洁)这也就带来了让程序健壮的方法,就是让程序的内部逻辑更易于理解。要做到这一点主要有两种方法:透明化和简洁化。数据要比程序逻辑更容易驾驭。所以如果要在复杂数据和复杂代码中选择一个,宁愿选择前者。更进一步:在设计中,应该主动将代码的复杂度转移到数据中去。缄默原则 (无话可说?那就沉默)补救原则 (出现异常时,马上退出并给出足够错误信息)经济原则 (宁花机器一分,不花程序员一秒)生成原则 (避免手工hack,尽量编写程序去生成程序)还不知道瓶颈所在就匆忙进行优化,这可能是唯一一个比乱加功能更加损害设计的错误。从畸形的代码到杂乱无章的数据布局,牺牲透明性和简洁性而片面追求速度、内存或者磁盘使用的后果随处可见。多样原则 (绝不相信所谓"不二法门"的断言)要为数据格式和代码留下扩展的空间,否则就会发现自己常常被原先不明智选择捆住了手脚,因为你无法既要改变它们又要维持对原来的兼容性。<div helvetica="" neue',="" helvetica,="" arial,="" sans-serif;="" font-size:="" 14px;="" line-height:="" 26px;="" background-color:="" rgb(244,="" 244,="" 244);="" "=""><div helvetica="" neue',="" helvetica,="" arial,="" sans-serif;="" font-size:="" 14px;="" line-height:="" 26px;="" background-color:="" rgb(244,="" 244,="" 244);="" "="">... 全文

职场 休闲 Unix编程艺术 Unix哲学

Unix体验中心(体现各种版本的Unix和类Unix操作系统

发现一个好网站,提供多种Unix和类Unix的系统的ssh登录,可以进行体现操作。免费的。Unix体验中心(Unix-Center.Net)http://www.unix-center.net/Unix体验中心(Unix-Center.Net)的目标是为研究、学习和使用各种版本的Unix和类Unix操作系统的教师、学生和工程技术人员提供一个体验和测试各种版本的Unix和类Unix系统的软硬件平台。该平台能够为所有注册用户免费提供如下服务:-- SSH登录(传统字符界面)-- VNC登录(图形用户界面)-- AMP服务(Apache, MySQL, PHP开发环境)-- C/C++,Fortran,Java,Ruby,Python,Perl,Common Lisp等多种语言开发工具-- MySQL数据库服务-- 在线日历服务-- 在线课程服务-- 开放源代码项目托管服务到目前为止,本站已经正式投入使用的服务器系统如下:T1000/Solaris系统:硬件环境:1 颗UltraSPARC T1芯片,CPU 主频为1.0 GHz,八核四线程配置8 GB内存软件环境:Solaris 10 Update 3 for SPARC机器域名:t1000.unix-center.net(公网),t1000-edu.unix-center.net(教育网)X4100/Solaris系统:硬件环境:2 颗双核单线程的AMD Opteron 280芯片,CPU 主频为2.4 GHz,配置4 GB内存软件环境:Solaris 10 Update 3 for x86/x64机器域名:x4100.unix-center.net(公网),x4100-edu.unix-center.net(教育网)PE860/OpenSolaris系统:硬件环境:1 颗双核单线程的Intel Xeon 3050芯片,CPU 主频为2.13 GHz,配置8 GB内存软件环境:OpenSolaris 2009.06 for x86/x64机器域名:opensolaris.unix-center.net(公网),opensolaris.unix-center.net(教育网)PE860/Fedora系统:硬件环境:1 颗双核单线程的Intel Xeon 3050芯片,CPU 主频为2.13 GHz,配置8 GB内存软件环境:Fedora Core 10机器域名:fedora.unix-center.net(公网),fedora-edu.unix-center.net(教育网)PE860/Ubuntu系统:硬件环境:1 颗双核单线程的Intel Xeon 3050芯片,CPU 主频为2.13 GHz,配置8 GB内存软件环境:Ubuntu 8.04机器域名:ubuntu.unix-center.net(公网),ubuntu-edu.unix-center.net(教育网)PE860/FreeBSD系统:硬件环境:1 颗双核单线程的Intel Xeon 3050芯片,CPU 主频为2.13 GHz,配置8 GB内存软件环境:FreeBSD 6.2机器域名:freebsd.unix-center.net(公网),freebsd-edu.unix-center.net(教育网)P510/AIX系统:硬件环境:2 颗双核单线程的Power 5芯片,CPU 主频为2.0 GHz,配置2 GB内存软件环境:AIX 5 Release 3机器域名:aix.unix-center.net(公网),aix-edu.unix-center.net(教育网)龙芯福珑系统:硬件环境: 3 台配置龙芯2E处理器的龙芯福珑计算机,CPU 主频为666 MHz,配置256 MB内存软件环境:Debian Linux for MIPS机器域名:仅限内网连接PE860/MySQL系统:硬件环境:1 颗双核单线程的Intel Xeon 3050芯片,CPU 主频为2.13 GHz,配置4 GB内存软件环境:Solaris 10 Update 3 for x86/x64, MySQL 6机器域名:mysql (内网)PE860/AMP系统:硬件环境:1 颗双核单线程的Intel Xeon 3050芯片,CPU 主频为2.13 GHz,配置4 GB内存软件环境:Fedora Core 10机器域名:my.unix-center.net  转自:http://blog.chinaunix.net/u3/100692/showart_2187546.html... 全文

Unix 操作系统 休闲 体验 职场

linux shell下转换unix时间

linux shell下转换unix时间 下面分享一个在 Shell 下转换 Unix 时间显示格式的小方法,对date命令熟悉的同学会立刻给出解决方法$date -d @1234567890Sat Feb 14 07:31:30 CST 2009但是date版本过低不支持@参数怎么办?来试试-d参数吧$date -d "UTC 1970-01-01 1234567890 secs"Sat Feb 14 07:31:30 CST 2009 如果你觉得每次输入好长一串字符记不住,那就自己写个小函数吧,可以放在~/.bashrc中调用。 # 转换 Unix 时间到本地时间字符串function ctime(){... 全文

转换 linux shell unix unix时间 linux

超酷的Unix终端/控制台工具小集合(1)

这里会列出32个命令行下的工具。它们有些不为人知,有些非常有用,有些晦涩难懂——我希望你能够找到一些你还不知道的有用工具!dstat & sar用一个窗口显示iostat,vmstat,ifstat及更多的状态htop & iotop查看进程,内存,IO,CPU的监控工具slurm网络流量图形化工具ttyrec & ipbt录制并播放终端会话工具vim & emacs... 全文

Unix终端 Unix

UNIX GUN VIM 相关配置文件介绍

本来很少弄vim的配置文件,弄也是windows下的vim,很简单,就是_vimrc文件;结果最近在AIX下编译了GNU VIM后,找不到配置文件,以为像Linux样是/etc/vim之类,结果不是,非常郁闷,后来查看vim的man才发现是/usr/local/share/vim/vimrc,顺便把其他配置文件的解释也列下来,方便以后查看: ... 全文

职场 unix 休闲 gnu vim aix unix linux

Unix环境下的几种电子邮件服务器介绍

下面给大家介绍几款常用的邮件服务器软件产品,供架构邮件服务器参考。1、 Unix 环境下的Sendmail... 全文

Unix环境 Unix 电子邮件服务器

Unix/Linux 下的小工具:lsof

Unix/Linux 下的小工具:lsoflsof 本来是一个很普通的小工具,用来显示被进程打开的文件信息,因为在 Unix/Linux 下任何东西都是文件,所以 lsof 这个 “小” 工具就显得非常强大,常被称作 “Unix debugging 的瑞士军刀”。lsof 很好的遵循了 Unix 的哲学 “只做一件事,并把事情做好”。来看看 Unix/Linux 下被看作文件的有哪些:普通文件,目录,NFS 文件,特殊块文件,字符文件,管道,连接,各种 socket,共享文件库等,所有都是文件,所以 lsof 用途非常广泛。列出所有进程打开的所有文件:# lsof 列出某个程序打开的所有文件:# lsof -c vim # lsof -c vim -c python 列出某个用户打开的所有文件:# lsof -u vpsee # lsof -u vpsee, root 列出某个组(group id)打开的所有文件:# lsof -g 1 列出某个进程(PID)打开的所有文件:# lsof -p 1 # lsof -p 1,2,3 列出某个目录下被打开的所有文件:# lsof +D /usr/lib 列出所有网络连接:# lsof -i 列出所有 TCP 连接或 UDP 连接:# lsof -i tcp # lsof -i udp 列出谁在使用某个网络端口:# lsof -i :22 # lsof -i :ssh 列出某个用户所有的网络连接:# lsof -a -u vpsee -i 列出所有 NFS 文件、Unix domain socket 文件:# lsof -N # lsof -U... 全文

调优 lsof linux Unix/Linux unix

《unix高级环境编程》进程间通信—— UNIX 域套接字

UNIX 域套接字        UNIX 套接字可在用一台机器上实现进程间通信,因为 UNIX 域套接字仅仅复制数据,不执行协议处理,不需要添加或删除网络报头,无需验证和,不产生顺序号,无需发送确认报文,比因特网域套接字的效率更高。UNIX域套接字提供流和数据报两种接口,UNIX域数据报服务是可靠的,既不会丢失消息也不会传递出错。UNIX域套接字是套接字和管道之间的混合物。为了创建一对非命名的,相互连接的 UNXI 域套接字,用户可以使用socketopair函数。其实现如下:#include <sys/socket.h> int socketpair(int domain, int type, int protocol, int sockfd[2]); /* 返回值:若成功则返回0,出错则返回-1 */#include "apue.h" #include <sys/socket.h> /* * Return a full-duplex "stream" pipe (a UNIX domain socket) * with the two file descriptors returned in fd[0] and fd[1]. */ int s_pipe(int fd[2]) { return(socketpair(AF_UNIX, SOCK_STREAM, 0, fd)); } 命名 UNIX 域套接字        命名 UNIX 域套接字也是针对没有亲缘关系进程之间的通信,它的地址结构和因特网的地址结构不同,其地址结构如下:... 全文

UNIX 域套接字

Linux/unix主机环回地址的一些功用

Linux/unix主机环回地址的一些功用作者:田逸(sery@163.com)发表于[url]http://network.51cto.com/art/200705/47670.htm[/url] ... 全文

linux unix 休闲 unix/liunx 环回地址

Linux中gcc g++常用编译选项以及makefile的编写

Linux中gcc,g++常用编译选项 -x language filename 设定文件所使用的语言,使后缀名无效,对以后的多个有效.也就是根据约定,C语言的后缀名称是.c的,而C++的后缀名是.C或者.cpp,如果你很个性,决定你的C代码文件的后缀名是. pig 哈哈,那你就要用这个参数,这个参数对他后面的文件名都起作用,除非到了下一个参数的使用。可以使用的参数有下面的这些: `c', `objective-c', `c-header', `c++', `cpp-output', `assembler', and `a ssembler-with-cpp'. 看到英文,应该可以理解的。 例子用法: cd.. gcc -x c hello.pig -x none filename 关掉上一个选项,也就是让gcc根据文件名后缀,自动识别文件类型 例子用法: gcc -x c hello.pig -x none hello2.c -c 只激活预处理,编译,和汇编,也就是他只把程序做成obj文件 例子用法: gcc -c hello.c 他将生成.o的obj文件 -S 只激活预处理和编译,就是指把文件编译成为汇编代码。 例子用法 gcc -S hello.c 他将生成.s的汇编代码,你可以用文本编辑器察看 -E 只激活预处理,这个不生成文件,你需要把它重定向到一个输出文件里面. 例子用法: gcc -E hello.c > pianoapan.txt gcc -E hello.c | more 慢慢看吧,一个hello word 也要预处理成800行的代码 -o 制定目标名称,缺省的时候,gcc 编译出来的文件是a.out,很难听,如果你和我有同感,改掉它,哈哈 例子用法 gcc -o hello.exe hello.c (哦,windows用习惯了) gcc -o hello.asm -S hello.c -pipe 使用管道代替编译中临时文件,在使用非gnu汇编工具的时候,可能有些问题 gcc -pipe -o hello.exe hello.c -ansi 关闭gnu c中与ansi c不兼容的特性,激活ansi c的专有特性(包括禁止一些asm inline typeof关键字,以及UNIX,vax等预处理宏 /* 注释中的不常用**************************************************** -fno-asm 此选项实现ansi选项的功能的一部分,它禁止将asm,inline和typeof用作关键字。 -fno-strict-prototype 只对g++起作用,使用这个选项,g++将对不带参数的函数,都认为是没有显式的对参数的个数和类型说明,而不是没有参数. 而gcc无论是否使用这个参数,都将对没有带参数的函数,认为没有显式说明的类型 -fthis-is-varialble 就是向传统c++看齐,可以使用this当一般变量使用. -fcond-mismatch 允许条件表达式的第二和第三参数类型不匹配,表达式的值将为void类型 -funsigned-char -fno-signed-char -fsigned-char -fno-unsigned-char 这四个参数是对char类型进行设置,决定将char类型设置成unsigned char(前两个参 数)或者 signed char(后两个参数) *注释完成*********************************************/   -include file 包含某个代码,简单来说,就是便于某个文件需要另一个文件的时候,就可以用它设 定,功能就相当于在代码中使用#include<filename> 例子用法: gcc hello.c -include /root/pianopan.h -imacros file 将file文件的宏,扩展到gcc/g++的输入文件,宏定义本身并不出现在输入文件中 -Dmacro 相当于C语言中的#define macro -Dmacro=defn 相当于C语言中的#define macro=defn -Umacro 相当于C语言中的#undef macro -undef 取消对任何非标准宏的定义 -Idir 在你是用#i nclude"file"的时候,gcc/g++会先在当前目录查找你所制定的头文件,如 果没有找到,他回到缺省的头文件目录找,如果使用-I制定了目录,他 回先在你所制定的目录查找,然后再按常规的顺序去找. 对于#i nclude<file>,gcc/g++会到-I制定的目录查找,查找不到,然后将到系统的缺 省的头文件目录查找 -I- 就是取消前一个参数的功能,所以一般在-Idir之后使用 -idirafter dir 在-I的目录里面查找失败,讲到这个目录里面查找. -iprefix prefix -iwithprefix dir 一般一起使用,当-I的目录查找失败,会到prefix+dir下查找 -nostdinc 使编译器不再系统缺省的头文件目录里面找头文件,一般和-I联合使用,明确限定头 文件的位置 -nostdin C++ 规定不在g++指定的标准路经中搜索,但仍在其他路径中搜索,.此选项在创libg++库 使用 -C 在预处理的时候,不删除注释信息,一般和-E使用,有时候分析程序,用这个很方便的 -M 生成文件关联的信息。包含目标文件所依赖的所有源代码你可以用gcc -M hello.c 来测试一下,很简单。 -MM 和上面的那个一样,但是它将忽略由#include<file>造成的依赖关系。 -MD 和-M相同,但是输出将导入到.d的文件里面 -MMD 和-MM相同,但是输出将导入到.d的文件里面 -Wa,option 此选项传递option给汇编程序;如果option中间有逗号,就将option分成多个选项,然 后传递给会汇编程序 -Wl.option 此选项传递option给连接程序;如果option中间有逗号,就将option分成多个选项,然 后传递给会连接程序. -llibrary 制定编译的时候使用的库 例子用法 gcc -lcurses hello.c 使用ncurses库编译程序 -Ldir 制定编译的时候,搜索库的路径。比如你自己的库,可以用它制定目录,不然 编译器将只在标准库的目录找。这个dir就是目录的名称。 -O0 -O1 -O2 -O3 编译器的优化选项的4个级别,-O0表示没有优化,-O1为缺省值,-O3优化级别最高  -g 只是编译器,在编译的时候,产生调试信息。 -gstabs 此选项以stabs格式声称调试信息,但是不包括gdb调试信息. -gstabs+ 此选项以stabs格式声称调试信息,并且包含仅供gdb使用的额外调试信息. -ggdb 此选项将尽可能的生成gdb的可以使用的调试信息. -static 此选项将禁止使用动态库,所以,编译出来的东西,一般都很大,也不需要什么 动态连接库,就可以运行. -share 此选项将尽量使用动态库,所以生成文件比较小,但是需要系统由动态库. -traditional 试图让编译器支持传统的C语言特性下面简单的运用: 我们在文本编辑器里写一个C的简单的程序(好像所有学习C或者C++的书都会出现) 代码: #include <stdio.h> int main() {     printf("Hello,World!\n");     return 0; } 现在存盘为Hello.c,打开你的终端,并在文件当前目录输入: gcc Hello.c -o hello    编译时可能会出现如下警告:no newline at and of file ,只有在文件结尾添加一个新行就好了。 然后在终端中输入 ./hello ,你就能在终端中看到程序运行结果了。 下面来说下C++是如何编译的 代码: #include <iostream> using namespace std; int main() {     cout<<"Hello,World!\n"<<endl;     return 0; } 存盘为Hello.cpp 使用gcc编译???不对,这里我们使用g++来编译C++程序 g++ Hello.cpp -o hello 编译多个文件我们怎么办???来看下面出了三个文件Hello.h, Hello.cpp, MyFirst.cpp 代码: //file_NO1:Hello.h class Hello  {    public:      Hello();      void Display(); }; //file_NO2:Hello.cpp #include <iostream> #include "Hello.h" using namespace std; Hello::Hello() { } void Hello::Display() {     cout<<"Hello,World!\n"<<endl; } //file_NO3:MyFirst.cpp #include <iostram> #include "Hello.cpp" int main() {     Hello theHello;     theHello.Display();     return 0; } 在g++中有一个参数-c 可以只编译不连接,那么我们就可以按如下顺序编译文件, 代码: g++ -c Hello.cpp -o Hello.o g++ -c MyFirst.cpp -o MyFirst.o g++ MyFirst.o hello.o -o MyFirst 你是否会问,如果是一个项目的话,可能会有上百个文件,这样的编译法,人不是要累死在电脑前吗,或者等到你编译成功了,岂不是头发都白了,呵呵,所以我们要把上述的编译过程写进以下一个文本文件中: Linux下称之为makefile #这里可以写一些文件的说明 MyFirst: MyFirst.o hello.o g++ MyFirst.o hello.o -o MyFirst Hello.o:Hello.cpp g++ -c Hello.cpp -o Hello.o MyFirst.o:MyFirst.cpp g++ -c MyFirst.cpp -o MyFirst.o makefile 编写规则: (1)以“#”开始的行为注释 (2)文件依赖关系为:     target:components     rule 存盘为MyFirst,在终端输入:make MyFist ,程序出现了错误可是所有程序员共同的敌人,在编写程序时我们应该尽量的去避免错误的出现,不过编写的时候再怎么都不可避免的出现这样那样的错误,对程序进行必要的调试是一个好主意,那我们怎么来调试程序呢,看下面: gdb ./文件名 ////////////////在这里我修改下要想下面可以调试,在上面编译的 时候必须加上参数g,g++ -g hello.cpp -o hello 以下为调试状态下的可以用到的命令(可以仅输入单词的输入,如break可简为b),尖括号中为说明 list <显示源代码> break 行号 <设置断点> run <运行程序> continue <继续从断点处执行> print 变量 <调试时查看变量的值> del 行号 <删除断点> step <单步执行,可跟踪到函数内部> next <单步执行,不可跟踪到函数内部> quit <退出> makefile 的编写不是件容易的事情,因为自己写的makefile可能不能在所有的unix/linux类操作系统下通用。因此在很多项目中都用automake.autoconf或者是Cmake等工具。... 全文

gcc GCC linux Linux LINUX makefile Makefile unix UNIX Unix 编译器

Unix 常用命令

今天入手IOS开发,android  系统是基于 Linux ,而IOS 是基于Unix 的。 一下内容来自:http://www.ccvita.com/23.html 第一章 目录及文件操作命令 1.1 ls... 全文

unix

unix用户权限

用户-组-权限/etc/passwd 用户权限  mengqc:x:500:500:mengqc:/home/mengqc:/bin/bash    账号名:x:UID:GID:账户目录:shell登陆方式/etc/shadow 口令密码... 全文

unix

UNIX中文宝库

国内较权威的UNIX技术网站,值得关注!给力(0票)动心(0票)废话(0票)专业(0票)标题党(0票)路过(0票) getcountscom(4392,11); getcountscom(4392,12); getcountscom(4392,13); getcountscom(4392,14); getcountscom(4392,15); getcountscom(4392,16); ... 全文

UNIX

学习Unix远程登陆

很多朋友都可能会有Unix远程登陆的问题,今天我们在这里就为大家解决下,如何Unix远程登陆。windows2000自带了一个Telnet工具 - 只需在命令行中键入telnet就可连接远程主机 - 我这里是Unix远程登陆,由于使用了代理上网,不能直接使用windows2000的telnet工具,所以我从网上下了一个工具包,网页会详细说明了有关工具包中各种远程工具的法律信息。Unix远程登陆步骤:解开zip包,可以看到有很多可执行程序,这里主要执行telnet远程登录工具putty.exe:1. 设置访问主机ip地址和端口以及协议。... 全文

Unix远程

讲解Unix线程同步

学习了Unix线程的一些基础知识后,我们要来学习新的Unix线程的知识了,今天,我们就来学习Unix线程的同步知识。希望对大家对Unix线程的学习有所帮助。Unix线程 在POSIX线程(pthread)情况下1. 互斥量:pthread_mutex_t相关函数: PTHREAD_MUTEX_INITIALIZER  ... 全文

Unix线程

2 3 4 5 6 7 8 9 10 11