一、打开/etc/apt/source.list源列表文件加放源
二、make 工具:
make默认查找的文件名:GNUmakefile makefile Makefile
常用预定义变量
$* 不含扩展名的目标文件
$@ 目标的完整名称。
$% 如果目标是归档成员,则该变量表示目标的归档成员名称。例如,如果目标名称
为 mytarget.so(image.o),则 $@ 为 mytarget.so,而 $% 为 image.o。
$+ 所有的依赖文件,以空格分开,并以出现的先后为序,可能包含重复的依赖文件。
$< 第一个依赖文件的名称。
$? 所有的依赖文件,以空格分开,这些依赖文件的修改日期比目标的创建日期晚。
$^ 所有的依赖文件,以空格分开,不包含重复的依赖文件。
AR 归档维护程序的名称,默认值为 ar。
ARFLAGS 归档维护程序的选项。
AS 汇编程序的名称,默认值为 as。
ASFLAGS 汇编程序的选项。
CC C 编译器的名称,默认值为 cc。
CCFLAGS C 编译器的选项。
CPP C 预编译器的名称,默认值为 $(CC) -E。
CPPFLAGS C 预编译的选项。
CXX C++ 编译器的名称,默认值为 g++。
CXXFLAGS C++ 编译器的选项。
隐含规则:(1) 可以省略同名的依赖文件(2)
包含其它makefile : 用include 或者用 -include 来忽略当中的错误
目录搜索:VPATH = ./src:../inc 用来指定全局搜索目录 vpath %.h ../inc 用来指定部分文件搜索的目录
gcc -MM main.c 它会根据main.c里面的包含头文件自动生成依赖关系
把每个源文件所依赖的文件目录自动生成一个依赖的.d文件
.c=.d 意思是所有文件替换,.c换成.d
环境变量可以带入
还有条件判断和函数
程序注释:
1)刚开始的几行定义了几个变量,比如用CC来代替真正的 gcc 编译器,这样当想换别的编译器来编译我们的程序时直接改变CC变量的值就OK了。其它的:
CC 指代用来编译程序的编译器,这里使用 gcc
RPOG_NAME 指代最终要生成的可执行文件名,需手工填入
INCS 指代工程文件中所自定义的所有头文件,需手工填入
SRCS 指代所有使用到的源文件,需手工填入
OBJS 是通过 .c 文件得到的 .o 文件,因为每个 .c 文件都将编译生成一个对应的 .o 文件,自动生成
LIBS 用来指代编译GTK程序时需要使用到的GTK相关库,一般使用默认的 gtk+-2.0 即可,需手工填入
CFLAGS 用来指代编译程序时使用到的一些编译选项, -g 表示生成调试信息以供GDB使用,-Wall表示生成编译时的警告信息(W表示Warning,all 表示全部)
LDFLAGS 用来指代进行程序连接时使用到的一些选项
以上这些变量,将在Makefile的剩余部分使用 ${xxx} 的形式进行引用。
2)关于“目标”:“依赖关系”
从“all: ${PROG_NAME}”这一句开始,Makefile就开始使用 目标:依赖 的关系来处理真正的程序编译了;而它们下边以 TAB 键开始的行就是满足依赖关系后要运行的程序(注意:是TAB键,不是空格)。具体笔者就不详细描述了,有兴趣的读者可以参考下边推荐的教程。
3)关于 “.c.o:” 语句:
这句话的意思就是说,当遇到一个 .c 文件,那么使用它下边的命令“ ${CC} -c $< ${CFLAGS}” 将 .c 文件编译为 .o 文件;命令中 $< 用来代替对应的 .c 文件的文件名。
4)关于"clean" 和 "rebuild":
这两个者伪目标,必须使用 "make clean" 或 "make rebuild" 来引用,"make clean" 用于删除生成的 .o 目标文件和可执行文件; "make rebuild" 用于对整个工程进行重构建。
三、find directory file
四、ftp IP
>get filename
>mget filelist
>put
>mput
>ls
>quit
五、GTK
安装
sudo apt-get install gnome-core-devel #这将安装 libgtk2.0-dev libglib2.0-dev 等开发相关的库文件
sudo apt-get install pkg-config #用于在编译GTK程序时自动找出头文件及库文件位置
编译
gcc hello_dubuntu.c -o hello_dubuntu `pkg-config --cflags --libs gtk+-2.0`
`pkg-config --cflags --libs gtk+-2.0` 是GTK相关文档的头文件或者库文件的目录
六、SMB
安装samba软件包。
如:rpm ivh samba*
apt-get install samba
查看samba服务是否正在运行
用ps -aux 查看是否有smbd、nmbd两个进程
让Samba从inetd中启动
在inetd.conf文件中加入下面的两行
格式:[service] [socket] [protocol] [flags] [user] [server path] [arguments]
netbios-ssn stream tcp nowait root /usr/sbin/smbd smbd
netbios-ns dgram udp wait root /usr/sbin/nmbd nmbd
重新启动inetd
kill -HUP 1
七、telnet
>logout
八、安装 G++:sudo apt-get install build-essential
九、安装JAVA:apt-get install sun-java6-jdk sun-java6-jre
十、配置网络:
查看网络状态
netstat -nr
ifconfig eth0 192.168.1.2 netmask 255.255.255.0
十一、RPM
rpm -i 安装
rpm -U 更新
-vh等来查看过程
反安装RPM包 rpm -e package-name
查看已经安装的RPM包
查看全部安装的:rpm -qa
查看某个安装: rpm -q pname
查看某个文件在某个包里面
rpm -qf 文件完整路径
查看某个包的用途
rpm -qip pname
十二、tar
tar xvf xxx.tar 解压文件
tar cvf xxx.tar directory 打包某个目录
十三、 at
使用权限 : 所有使用者
使用方式 : at -V [-q queue] [-f file] [-mldbv] TIME
说明 : at 可以让使用者指定在 TIME 这个特定时刻执行某个程式或指令,TIME 的格式是 HH:MM其中的 HH 为小时,MM 为分钟,甚至你也可以指定 am, pm, midnight, noon, teatime(就是下午 4 点锺)等口语词。
如果想要指定超过一天内的时间,则可以用 MMDDYY 或者 MM/DD/YY 的格式,其中 MM 是分钟,DD 是第几日,YY 是指年份。另外,使用者甚至也可以使用像是 now + 时间间隔来弹性指定时间,其中的时间间隔可以是 minutes, hours, days, weeks
另外,使用者也可指定 today 或 tomorrow 来表示今天或明天。当指定了时间并按下 enter 之后,at 会进入交谈模式并要求输入指令或程式,当你输入完后按下 ctrl+D 即可完成所有动作,至于执行的结果将会寄回你的帐号中。
把计 :
-V : 印出版本编号
-q : 使用指定的伫列(Queue)来储存,at 的资料是存放在所谓的 queue 中,使用者可以同时使用多个 queue,而 queue 的编号为 a, b, c... z 以及 A, B, ... Z 共 52 个
-m : 即使程式/指令执行完成后没有输出结果, 也要寄封信给使用者
-f file : 读入预先写好的命令档。使用者不一定要使用交谈模式来输入,可以先将所有的指定先写入档案后再一次读入
-l : 列出所有的指定 (使用者也可以直接使用 atq 而不用 at -l)
-d : 删除指定 (使用者也可以直接使用 atrm 而不用 at -d)
-v : 列出所有已经完成但尚未删除的指定
例子 :
三天后的下午 5 点锺执行 /bin/ls :
at 5pm + 3 days /bin/ls
三个星期后的下午 5 点锺执行 /bin/ls :
at 5pm + 2 weeks /bin/ls
明天的 17:20 执行 /bin/date :
at 17:20 tomorrow /bin/date
1999 年的最后一天的最后一分钟印出 the end of world !
at 23:59 12/31/1999 echo the end of world !
十四、chmod 777 -R /home