Linux操作命令:
1: mkdir: 创建目录
2: mount/unmount 挂载硬盘到指定路径/卸载指定路径的硬盘
3: ls: 显示当前目录信息...ls -l 获取执行权限
4: find: 在磁盘中查找文件
5: grep: 在一堆文件中查找字符串所在路径 grep -m "main"...grep "main" -r 路径
6: cd: 进入目录
7: cp,mv: 复制,移动 -rf文件夹包括子文件
8: rm: rm -rf c...删除指定c文件夹 rm c...删除指定c文件 rm $(find ./ -name "*.c")...删除查找的所有.c文件
9: pwd: 获取当前所在目录
10: fdisk: 查看所有盘符
11: 绝对路径: /(根目录开始)...相对路径(./../)
12: $保存结果到变量...*模糊查找
13: vim a: 追加 esc:shift+:w保存 q退出...shift+set number显示行号...shift+: /aaa查找aaa位置
14: cat:打印文本内容
15: gcc -c main.c编译生成main.o...gcc main.o生成main.out... ./a.out执行
gcc main.c 编译成a.out
gcc main.o/main.c -o main.exe生成main.exe
g++ main.c -o main++生成main++... ./main++执行
16: ar -r libmain.a main.o
gcc main.cpp -fPIC/-fpic -shared -o libmain.so
gcc -o test.exe test.cpp -L. -lmain
编译出控制台程序乱码时按照控制台编码设置添加以下参数:-fexec-charset=GBK -finput-charset=UTF-8
17:一些常用编译命令
MinGW:
c -> o gcc -c a.c
c -> exe gcc a.c libs.o -o a.exe (从主程序a.c,附加libs,生成a.exe)
o -> exe gcc a.o b.o ... -o main.exe
c -> dll,def,a gcc a.c -shared -o a.dll -Wl,--output-def,a.def,--out-implib,liba.a
a -> dll a2dll liba.a
dll -> a: dlltool --dllname a.dll --def a.def --output-lib liba.a (需要def文件)
a -> def: dumpbin /exports lib.a > lib.def (在windows上调用,def需要修改)
dll -> def : pexports a.dll -o > a.def (这里的-o是指给函数标序号)
lib -> def : reimp -d a.lib
lib -> a: (for __cdecl functions in most case) reimp a.lib; (for __stdcall functions)MSVC:
c -> lib cl /LD a.c (注意已经定义了export列表)
c -> dll cl /LD a.c
c -> obj cl /c a.c
c -> exe cl a.c /out:a.exe
dll ->lib lib /machine:ix86 /def:a.def /out:a.lib (需要def文件)
obj ->lib lib a.obj b.obj... /out:mylib.lib
dll ->def DUMPBIN a.dll /EXPORTS /OUT:a.def (生成的def需要做修正)
lib ->def reimp -d a.lib (这个要在MSYS+MinGW下用)
(一)ssh远程登录&退出
登录命令: ssh 用户名@主机地址
退出命令: exit
(二)ssh上传和下载文件
上传命令: scp -P -r 用户名@主机地址
下载命令: scp -P -r 用户名@主机地址
1. -P 端口号
2. -r 文件为目录在目录前加-r
(三)Makefile
作用: 使用makefile声明编译规则.
Makfile结构:
start:
定义变量
(target可以有多个,使用make target编译多个target)
target: 依赖
编译命令
end
写法:
start:
INC_DIR = -I./ -I../ (-I gcc->.h文件包含)
LIB_DIR = -L./ -L../ (-L gcc->.lib文件包含(linux下.a文件))
game_server: ./main.c \
./test.c (依赖之间空格分开, \符号表示换行(原则上不能换行))
gcc $(INC_DIR) $(LIB_DIR) -std=c99 -g -Wall -o $@ $^ -lxx.a -lxx.a
clean:(clean也是target)
rm game_server
end
1: -std=c99 编译c代码标准c99, -On: 优化级别(O必须大写, 编译优化, n越大优化越高),
-w/-Wall/-W: 关闭所有警告/显示所有警告/显示错误警告
2: $@: 所有目标 $^: 所有依赖
3: -l库名字: 连接指定的.a库 (libuv.a库->-luv.a,省略lib)
4: 使用make命令: make game_server(target), make默认是第一个target
5: 运行./game_server