编译软件的一些参数(不定时更新)(多用于linux下)

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

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值