m32指定编译为32位应用程序; makeCFLAGS=-m32 m64指定编译为64位应用程序; makeCFLAGS=-m64
64位版:加上 -m64 参数,生成64位的代码。 debug版:加上 -g 参数,生成调试信息。 release版:加上 -static 参数,进行静态链接,使程序不再依赖动态库。加上 -O3 参数,进行最快速度优化。加上-DNDEBUG参数,定义NDEBUG宏,屏蔽断言。 当没有-m32或-m64参数时,一般情况下会生成跟操作系统位数一致的代码,但某些编...
EN-m32 -m64 -mx32 生成32位或64位环境的代码。-m32选项将int、long和指针类型设置为32位,并生成...
-m32,-m64,-m16为32位、64位或16位环境产生代码 -m32下int,long和指针类型均为32位 -m64下int为32位,long和指针类型均为64位 -m16与-m32类似,只是它会在汇编文件开头输出.code16gcc(针对GCC)汇编制导,从而可以按16位 模式运行二进制 编译的详细过程可以看我写的笔记 : GAN就行了:CSAPP 阅读笔记 (1)18...
当没有-m32或-m64参数时,一般情况下会生成跟操作系统位数一致的代码,但某些编译器存在例外,例如—— 32位Linux下的GCC,默认是编译为32位代码。 64位Linux下的GCC,默认是编译为64位代码。 Window系统下的MinGW,总是编译为32位代码。因为MinGW只支持32位代码。
gcc -m64 hello.c -o hello-64 // 编译64位程序 gcc -m32 hello.c -o hello-32 // 编译32位程序 在编译 32 位程序的时候,可能会遇到如下报错。 /usr/include/stdio.h:27:10: fatal error: bits/libc-header-start.h: No such file or directory ...
例如,`-march=x86-64` 用于指定目标架构为x86-64,`-m32` 用于生成32位目标文件,`-m64` 用于生成64位目标文件。 除此之外,`-m` 选项还可以用于启用或禁用某些指令集或功能。例如,`-msse2` 用于启用SSE2指令集,`-mno-sse2` 用于禁用SSE2指令集。 需要注意的是,具体的 `-m` 选项参数取决于目标架构和指令...
参数主要配置头文件搜索路径, 选择体系结构(-m32 -m64), 生成位置无关代码(-fPIC, 共享库必须要使用位置无关的目标文件, 而不是可重定位目标文件, 共享库不能重定位, 因为不知道, 也不能假设共享库的加载位置.) 汇编 as. 识别汇编代码, 生成可重定位或位置无关的目标文件, 有什么区别呢? 稍后再研究. ...
-m32和-m64:这些标志指定是为32位还是64位目标进行编译。 7.其他Flag 除了前面提到的类别,还有一些其他标志。 一些常用的杂项标志包括: -std:该标志指定要使用的C语言标准版本。例如,-std=c99选择C99标准。-pedantic:该标志启用对所选择的C语言标准的严格遵守,对非标准或可疑代码结构提供额外的警告。-Wextra:该标...
-m32 -m64 -mx32 -m16 -miamcu 为16 位、32 位或 64 位环境生成代码。这-m32选项将 int 、 long 和指针类型设置为 32 位,并生成在 32 位模式下运行的代码。 -m64选项设置 int 为32 位, long 指针类型设置为 64 位,并生成 x86-64 架构的代码。