gcc:(编译器)
-v 显示gcc版本。
--h 显示帮助。
-o 重命名文件。例:gcc test.c -o main.out
-E 将源文件预处理但不编译。例:gcc test.c -E -o test.i
-c 将源文件编译为工程文件。例:gcc test.c -c -o test.o
-S 将源文件翻译为汇编。例:gcc test.c -S -o test.s
-O 优化等级,用来对源文件优化,最高为-O3。例:gcc test.c -S -O2 test.s #这里设定优化等级为O2,值得注意的是,如果源文件使用了某个头文件中的内联函数,当没有-O参数,内联函数将不会在程序中展开。优化等级越高,程序编译越慢。
-m32 告诉编译器编译为32位程序。例:gcc test.c -m32 -o test.out
-x 指定语言(c/c++),建议将命令参数放在源文件名之前。例:gcc -x c test.c #或 gcc -x c++ test.c
-shared 动态库编译,链接动态库
-fPIC(或-fpic) 生成使用相对地址无关的目标代码。例: gcc -shared -fPIC -o libtest.so test.c //动态库后缀名为so
-g 调试选项,使用该参数,会生成含有调试信息的应用程序,如果想要使用gdb来调试程序,那么必须加上此项。例:gcc -g -o test.out text.c
ld:(链接器)
-o 重命名文件。例:ld -o main.o test.c
-Ttext 指定程序的入口地址。例:ld -Ttext 0x7c00 test.c
-N 不对齐数据。
-m 指定仿真模型(即运行的平台),输入ld --help查看。例:ld -m elf32-i386 tets.c #注意,如果是在windows下的ld(MingW),与linux是不同的。常用的是-m i386pe。
-e 指定入口标号,比如主函数(一般是main())为sys(),则要使用-e _sys。例:gcc -e _sys test.c #gcc中在函数名前加一个下划线表示这是一个函数,用来区分函数体。可以使用gcc的-S参数来将源文件翻译为汇编文件。
make:
-B 无条件make所有目标
-C make时先进入制定的目录,例:make -C test #先进入test目录再make
-f 指定makefile文件,例:make -f test/makefile #使用test目录下的makefile文件
objcopy:
-S 删除所有符号和重定位。
-O 转换输出文件的类型。例:objcopy -O binary test.out test.bin
-j 指定要截取的段。例:objcopy -j .text -j data test.out test.bin #具体段参见AT&T汇编
objdump:
-b 说明要处理的文件类型。
-d 将代码段反汇编。
-D 反汇编所有段。
-m 指定指令集,使用objdump --help可以在最后找到支持的指令集。
> 设定输出文件。例:objdump -b binary -D -m i386 main.bin > main.txt #这里将一个二进制文件main.bin 进行反汇编,结果输出到main.txt
-j 指定要反汇编的段。例:objdump -d test.out -j .text -j .data
-S 反汇编时,将源代码和反汇编代码交替显示,编译时需要加入-g选项。例:objdump -S -d test.out
-l 反汇编时插入源代码的行号和文件名
dd:
if 指定输入文件。
of 指定输出文件。
bs 指定最小块的大小。
count 指定块数。
例:dd if=/dev/zero of=test.bin bs=512 count=2 #这里生成一个名为test.bin,大小为512*2字节,全部都是0的文件。/dev/zero可以当作一个全部都是0的文件。
skip 指定输入文件的偏移量。
seek 指定输出文件的偏移量。
conv 用指定的参数转换文件。其中,conv=notrunc 表示不截短输出文件,比如输入文件的大小小于输出文件,不指定该参数,输出的文件会变短。
ar:
-c 创建一个库,不管这个库存在与否。
-r 插入模块。
-s 写入目标索引到库中。
例:ar -rcs lib.a a.o b.o c.o #将a.o b.o c.o三个工程文件打包进lib.a中。简单来讲,通常情况下编译文件:ld test.o a.o b.o c.o -o test.out ,用ar打包后:ld test.o lib.a -o test.out。可以简化文件的编译量。
-v 程序执行时显示详细信息。
zip:
例:zip -r test.zip abc #将abc目录压缩成zip文件
unzip:
例:unzip test.zip #解压test.zip
mv:
例:mv 123.txt test #将123.txt移入test目录
pwd:
#显示当前目录的绝对路径
tar:
*.tar 用 tar –xvf 解压
*.tar.gz和*.tgz 用 tar –xzf 解压
*.tar.bz2用tar –xjf 解压
*.tar.Z 用tar –xZf 解压
*.tar.xz 先用xz -d 解压,然后用tar -xvf解压
clear:
#清空屏幕
rm:
例:rm -f test.txt #强制删除test.txt