ILD

inline assembly language in C code
2017-10-6
使用asm关键字在C代码中嵌入汇编语言。asm是GNU扩展,如果使用-ansi或各种-std选项,使用__asm__代替asm。GCC提供两种形式的asm语句:basic asm statement和extended asm statement。前者不包含任何操作数。在函数内部,后者是混合C和汇编语

gcc编译带预处理指令的汇编代码
2017-11-12
看如下汇编文件:#define NUM 1000 ldr pc, =NUM#if defined(NUM) mov r1, #2#endifAS无法处理带C预处理指令的汇编代码,根据as manual:It does not do macro processing, include fi

ARM options
2018-1-6
以下这些选项为ARM port定义:-mabi=name产生指定ABI的代码,允许的值有:apcs-gnu, atpcs, aapcs, aapcs-linux, iwmmxt-mapcs-frame为所有函数产生兼容ARM Procedure Call standard的栈帧。和-fomit-fr

Arithmetic on void- and Function-Pointers
2018-7-6
GCC支持void指针和函数指针的加减运算。void和函数的size为1。允许对void和函数类型执行sizeof,其返回1.选项-Wpointer-arith产生一个警告,如果这些扩展被使用的话。In GNU C, addition and subtraction operations are s

Language Standards Supported by GCC
2018-7-24
GCC支持所有的C标准,同时包含GCC自己的扩展。选项-std可以指定支持的C标准和GCC扩展。-std=c89 -std=c90 --ansi-std=c99-std=c11-std=c17C17 is A version with corrections integrated of C11。GN

gcc指定输入文件格式
2018-12-25
今天在调试汇编的时候,使用.s作为文件后缀,发现预处理没有生效。修改成.S就可以了。gcc可以使用-x language指定输入的语言c c-header cpp-outputc++ c++-header c++-cpp-outputobjective-c objective-c-he

-rdynamic -Wl,--no-as-needed 选项
2019-3-31
-rdynamicPass the flag ‘-export-dynamic’ to the ELF linker, on targets that supportit. This instructs the linker to add all symbols, not only used one

gcc -v选项和-Wl,--verbose选项
2019-6-3
有时候找不到链接的共享库,需要查看gcc和其调用的collect导致干了啥,gcc -v选项,让gcc输出很多调试信息。gcc -Wl,--verbose,传递--verbose选项给collect,让ld输出很多调试信息。Reading specs from /work/router2/qca/q

编译共享库的时候强制检查未定义符号
2019-8-20
编译共享库的时候,有时候书写错误,比如snprintf写成了snrpintf,编译共享库的时候没有报错,但是后面使用共享库的其它程序链接的时候报错了。华为的VRP8系统,使用大量的so,并采用dlopen的方式加载,经常出现未定义符号而单板起不来的问题。可以在编译共享库的时候指定:-Wl,--no-

gcc optimization levels
2020-2-10
我们的软件应该选择那个优化等级:-O0 or no -O option不优化,这也是默认选项,如果要debug程序,推荐开启该选项。-O1 or -O开启大多数基本的优化,通常不使用-O1。-O2开启更多的优化,这是许多软件的默认优化等级,包括内核和所有的GNU项目。-O3开启更多昂贵的优化。-Os

Copyright © linuxdev.cc 2017-2024. Some Rights Reserved.