1.软件错误常见原因
权限问题,配置问题,写入失败问题
2.查看端口使用情况
netstat -anp
3.开启关闭服务
ntsysv
4.补丁
生成补丁文件:diff -rc A B > test.patch
一般A是原始文件,B是修改后的文件,test.patch称为A的补丁文件
-c 可以标识出不同之处的上下文环境,更有利于提高patch命令的识别能力
-c, -C NUM, --context[=NUM]
output NUM (default 3) lines of copied context
-r递归
-r, --recursive
recursively compare any subdirectories found
打补丁:patch -pN <test.patch
N表示忽略掉xxx.patch文件里目录信息里前面的第几个斜线
5.在ubuntu中查看已经安装的软件
dpkg -l | grep package-name
6.tar解压时同时使用大C参数指定解压后的文件存放的目录
tar -xzvf xxx.tar.gz -C /xxx/xxx
7.动态库
生成动态库:gcc -fpic -shared -o libfunc.so func.c
-fpic 指定生成位置无关代码(position independent code)
-shared 指定生成动态库
-o指定动态库名字
以上是一步生成动态库的过程,也可以先生成.o文件,再生成动态库
gcc -fpic -c func.c
gcc -fpic -shared -o libfunc.so func.o
使用动态库
在使用动态库前,如果动态库不在系统标准库路径下(/lib, /usr/lib 等),就需要指定LD_LIBRARY_PATH,否则运行时是找不到库的。
gcc -o test test.c -L. -lfunc
-L指定库所在目录
-l指定库名字
("-L" 及"-l" 参数一定要放在func.c后面,否则编译报找不到func定义)
静态库
生成静态库:ar -cr libfunc.a func.c
-c创建(do not warn if the library had to be created)
-r把文件插到目标文件中,已有的就替换,没有的就生成(replace existing or insert new file(s) into the archive)
以上是一步生成静态库的过程,也可以先生成.o文件,再生成静态库
gcc -c func.c
ar -cr libfunc.a func.o
使用静态库:gcc -o test test.c -L. -lfunc
当静态库和动态库同名时, gcc命令将优先使用动态库。
(建议先生成.o文件再生成动态库或者静态库)
8.改变android tsc2007触摸屏滑鼠模式为单击模式
添加 "设备名.idc" 配置文件
9.tar -xzvf xxx.tar.gz -C /xxx/xxx
-C 指定解压文件的存放目录
10.在命令行下使用cscope,如果想退出,按ctrl+z;
按tab键从已找到的列表跳转到查找命令选项
11.加载vmci.ko和vmhgfs.ko后,使用mount -t vmhgfs .host:/ /mnt/hgfs 挂载PC共享目录(前提是共享目录选项已经选上)
如果想开机自动挂载:
vim /etc/rc.d/rc.local
sudo mount -t vmhgfs .host:/ /mnt/hgfs
12.secureCRT 使用telnet不能连接问题
确保 eth*可用,centOS ip与主机在同一网段
安装 telnet、telnet-server、xinetd
在ntsysv里把telnet加入开机启动项,重启即可
13.secureCRT不能使用ssh2登陆问题
确保eth*可用,如果不可用,编译vmare-tools的vmxnet-only,加载相关驱动,便可可找到eth*,继而使用ssh2连接
14.在eclipse唤出代码提示:Alt+/ (和linux 里的Tab一样)
15.快速注释一块代码
先选中要注释的代码块,然后按住Ctrl+Shift+/
16.临界区
每个进程中访问临界资源的那段代码称为临界区(Critical Section)(临界资源是一次仅允许一个进程使用的共享资源)。每次只准许一个进程进入临界区,进入后不允许其他进程进入。不论是硬件临界资源,还是软件临界资源,多个进程必须互斥地对它进行访问。
进程进入临界区的调度原则是:
①如果有若干进程要求进入空闲的临界区,一次仅允许一个进程进入。
②任何时候,处于临界区内的进程不可多于一个。如已有进程进入自己的临界区,则其它所有试图进入临界区的进程必须等待。
③进入临界区的进程要在有限时间内退出,以便其它进程能及时进入自己的临界区。
④如果进程不能进入自己的临界区,则应让出CPU,避免进程出现“忙等”现象。
17. man 1 2 3
1 Executable programs or shell commands
2 System calls (functions provided by the kernel)
3 Library calls (functions within program libraries)
4 Special files (usually found in /dev)
5 File formats and conventions eg /etc/passwd
6 Games
7 Miscellaneous (including macro packages and conventions), e.g. man(7), groff(7)
8 System administration commands (usually only for root)
9 Kernel routines [Non standard]
e.g:
man 2 open
OPEN(2) Linux Programmer's Manual OPEN(2)
NAME
open, creat - open and possibly create a file or device
SYNOPSIS
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
int open(const char *pathname, int flags);
int open(const char *pathname, int flags, mode_t mode);
int creat(const char *pathname, mode_t mode);
DESCRIPTION...
18. secureCRT 登录虚拟机,老是断线
1) 关闭360安全卫士 、360杀毒
2)在pc主机上允许secureCRT及vmWare通过防火墙
3)在ubuntu里关闭防火墙
sudo ufw disable
4)Ubuntu系统上安装、启动sshd服务
sudo apt-get install openssh-server
sudo /etc/init.d/ssh restart
5)关闭adsafe
19. 修改dos 窗口大小
左上角右键,属性-布局--屏幕缓冲区大小--宽度(默认80),改这个就能改变最大化的宽度
20.使用SecureCRT时,偶尔发生屏幕假死,不能输入等情况。
后来发现,只要数据ctrl+s,就会假死;输入ctrl+q就可以恢复过来。
21.vim 括号匹配跳转操作:
- % 跳转到相配对的括号
- gD 跳转到局部变量的定义处
- '' 跳转到光标上次停靠的地方, 是两个', 而不是一个"
- mx 设置书签,x只能是a-z的26个字母
- `x 跳转到书签处("`"是1左边的键)
- > 增加缩进,"x>"表示增加以下x行的缩进
- < 减少缩进,"x<"表示减少以下x行的缩进
- { 跳到上一段的开头
- } 跳到下一段的的开头
- ( 移到这个句子的开头
- ) 移到下一个句子的开头
- [[ 跳转至上一个函数(要求代码块中'{'必须单独占一行)
- ]] 跳转至下一个函数(要求代码块中'{'必须单独占一行)
- C-] 跳转至函数或变量定义处
- C-O 返回跳转前位置
- C-T 同上
- nC-T 返回跳转 n 次
- 0 数字0,跳转至行首
- ^ 跳转至行第一个非空字符
- $ 跳转至行尾
22.c的#和##
#符号把一个符号直接转换为字符串,例如:
#define STRING(x) #x
const char *str = STRING( test_string ); str的内容就是"test_string",也就是说#会把其后的符号直接加上双引号。
##符号会连接两个符号,从而产生新的符号,例如:
#define SIGN( x ) INT_##x
int SIGN( 1 ); 宏被展开后将成为:int INT_1;