posted @ 2013-12-05 12:50
文章分类 - 编译器相关
摘要:CFLAGS = -g -O2 -Wall -Werror -Wno-unused编译出现警告性错误unused-but-set-variable,变量定义但没有使用,解决方法:增加CFLAGS 或CPPFLAGS参数如下: CPPFLAGS=" -Werror -Wno-unused-but-set-variable" || exit 1 Gcc总体选项列表后 缀 名所对应的语言-S只是编译不汇编,生成汇编代码-E只进行预编译,不做其他处理-g在可执行程序中包含标准调试信息-o file把输出文件输出到file里-v打印出编译器内部编译各过程的命令行信息和编译器的版本-I
阅读全文
摘要:造成的原因主要有两个:1. 程序(*.c,*.h)中使用了中文的标点符号(全角),比如;,},+。改成英文的标点半角符号就行了。甚至有时候空格也会出现类似错误,删掉该空格 重新输入。vim里面做类似替换还是很容易的。如何看到报错的符号?od -c hello.c > log.txt在log中就能看到符号了2.如果替换成了英文标点还出错的话,还报此错误,那么就是文件存贮格式的问题了。一般在windows下的文件都存成ansi格式,为了在linux下能通用,建议保存成UTF-8不带BOM编码格式,因为目前gcc和g++不支持UTF-8带BOM编码格式。用g++编译的时候碰到UTF-8 BOM
阅读全文
posted @ 2013-11-15 16:29
摘要:name源文件的基本名称(也即不包括“.“后的扩展名);选项含义:-0 从16 比特代码段开始;-3 从32 比特代码段开始;-a 开启与as、ld 的部分兼容性选项;-b 产生二进制文件,后面可以跟文件名;-g 在目标文件中仅存入全局符号;-j 使所有跳转语句均为长跳转;-l 产生列表文件,后面可以跟随列表文件名;-m 在列表中扩展宏定义;-n后面跟随模块名称(取代源文件名称放入目标文件中);-o 产生目标文件,后跟目标文件名;-s 产生符号文件,后跟符号文件名;-u 将未定义符号作为输入的未指定段的符号;-w 不显示警告信息;ld 连接器的使用语法和选项:ld 连接器的使用语法和选项:--
阅读全文
posted @ 2013-09-25 10:17
摘要:objcopy [选项]... 输入文件 [输出文件][功能]将目标文件的一部分或者全部内容拷贝到另外一个目标文件中,或者实现目标文件的格式转换。[描述]objcopy工具使用 BFD库读写目标文件,它可以将一个目标文件的内容拷贝到另外一个目标文件当中。objcopy通过它的选项来控制其不同的动作,它可以将目标文件拷贝成 和原来的文件不一样的格式。需要注意的是objcopy能够在两种格式之间拷贝一个完全链接的文件,在两种格式之间拷贝一个可重定位的目标文件可能不会正 常地工作。objcopy在做转换的时候会创建临时文件,然后将这些临时文件删除。objcopy使用BFD来做它所有的转换工作;它访问
阅读全文
posted @ 2013-09-24 21:49
摘要:附录A: Ndisasm------------------- 反汇编器, NDISASM A.1 简介反汇编器是汇编器NASM的一个很小的附属品.我们已经拥有一个具有完整的指令表的x86汇编器,如果不把这个指令表尽最大可能地利用起来,似乎很可惜,所以我们又加了一个反汇编器,它共享NASM的指令表(并附加上一些代码)反汇编器仅仅产生二进制源文件的反汇编.NDISASM不理解任何目标文件格式,就象'objdump',也不理解'DOS .EXE'文件,就象'debug',它仅仅反汇编. A.2 开始: 安装. 参阅1.3的安装指令.NDISASM就象
阅读全文
posted @ 2013-09-24 11:35
摘要:本文解 释两种最流行的 Linux? 汇编器 —— GNU Assembler(GAS)和 Netwide Assembler(NASM) —— 之间一些比较重要的语法差异和语义差异,包括基本语法、变量和内存访问、宏处理、函数和外部例程、堆栈处理以及重复执行代码块的技术方面的差异。与其他语言不同,汇编语言要求开发人员了解编程所用机器的处理器体系结构。汇编程序不可移植,维护和理解常常比较麻烦,通常包含大量代码行。但是,在机器上执行的运行时二进制代码在速度和大小方面有优势。对于在 Linux 上进行汇编级编程已经有许多参考资料,本文主要讲解语法之间的差异,帮助您更轻松地在汇编形式之间进行转换。本文
阅读全文
posted @ 2013-09-24 09:28
摘要:SECTION是一种组织代码和存储的方式NASM支持标准的.data, .text和.bss,编译后的程序文件中的内存地址顺序是.text, .data,用户自定义section。NASM支持用户自定义section同名的section,编译后会放在同一块连续的内存上[SECTION .data]var1 db 0x01[SECTION .text]MOV AX, var1[SECTION .data]var2 db 0x02编译后,内存为0xB8040000 0102,其中0xB804是MOV AX,0x04的机器码,0x04是标号var1汇编后的偏移地址。因为汇编后,var1对应的存储区在
阅读全文
posted @ 2013-09-24 09:02
浙公网安备 33010602011771号