gcc -m32 -fno-stack-protector -no-pie -fcf-protection=none -z execstack -z norelro -O0 -g -static -o tmp tmp.c 其实就是按照过程顺序,先编译选项:32位,不要金丝雀,不要pie,不要endbr64; 然后链接时的选项,给予栈执行权限,栈不要只读rel节; 最后是输出选项,O0,g标志,静态,输出名。
64位版:加上 -m64 参数,生成64位的代码。 debug版:加上 -g 参数,生成调试信息。 release版:加上 -static 参数,进行静态链接,使程序不再依赖动态库。加上 -O3 参数,进行最快速度优化。加上-DNDEBUG参数,定义NDEBUG宏,屏蔽断言。 当没有-m32或-m64参数时,一般情况下会生成跟操作系统位数一致的代码,但某些编...
例如,要传递-rpath=/usr/local/lib选项给链接器,可以使用-Wl,-rpath=/usr/local/lib选项。 -static:静态链接所有库文件,生成独立的可执行文件。 -shared:生成共享库文件,可供其他程序动态链接使用。 -o :指定输出文件名。例如,要将输出文件名设置为myprogram,可以使用-o myprogram选项。 除了上述选...
unused-function:警告声明但是没有定义的static函数; unused- label:声明但是未使用的标签; unused-parameter:警告未使用的函数参数; unused-variable:声明但 是未使用的本地变量; unused-value:计算了但是未使用的值; format:printf和scanf这样的函数中的格式字符 串的使用不当; ...
--bin Plain Binary 普通二进制 --m32 Motorola 32 bit Hex 摩托罗拉32位Hex码 --i32 Intel 32 bit Hex 英特尔32位Hex码 --vhx Byte Oriented Hex format 定向字节的 Hex 格式 --base addr Optionally set base address for m32,i32 为 m32,i32设置基地址(可选的) Output Formats Requiring Debug Informati...
在某些情况下,我们可能会将 C 代码与汇编代码一起混合使用。比如,使用汇编代码直接与硬件进行交互,或者在处理任务时希望占用尽量少的资源同时获得最大的性能,而使用 C 代码处理一些更高级 的任务。通常情况下,混合使用 C 与汇编可分为以下三种情形: 在C 中调用汇编中定义的函数 在汇编中调用 C 语言中的函数...
static: %{!static-pie: %{rdynamic:-export-dynamic} %{m16|m32:-dynamic-linker %{muclibc:/lib/ld-uClibc.so.0;:%{mbionic:/system/bin/linker;:%{mmusl:/lib/ld-musl-i386.so.1;:/lib/ld-linux.so.2}}} %{m16|m32|mx32:;:-dynamic-linker %{muclibc:/lib/ld64-uClibc.so.0;:%{mb...
(1) -Wunused-function用来警告存在一个未使用的static函数的定义或者存在一个只声明却未定义的static函数,参见下面例子中的func1和func2;(2) -Wunused-label用来警告存在一个使用了却未定义或者存在一个定义了却未使用的label,参加下面例子中的func3和func7;(3) -Wunused-variable用来警告存在一个定义了却未使用...
M32R/D Options -m32r2 -m32rx -m32r -mdebug -malign-loops -mno-align-loops -missue-rate=number -mbranch-cost=number -mmodel=code-size-model-type -msdata=sdata-type -mno-flush-func -mflush-func=name -mno-flush-trap -mflush-trap=number -G num RS/6000 and PowerPC Options -mcpu...