
读书笔记之《GCC技术参考大全》
记录GCC使用中的片段
楼兰公子
这个作者很懒,什么都没留下…
展开
-
编译调试报错问题
Python Exception <class 'NameError'> Installation error: gdb.execute_unwinders function is missing: Python Exception <class 'NameError'> Installation error: gdb.execute_unwinders functio...原创 2020-04-22 20:57:15 · 1635 阅读 · 0 评论 -
Linux APP coredump出现时候几种可能的情况
数组越界 1)由于使用错误的下标,导致数组访问越界。2)使用strcpy, strcat, sprintf, strcmp,strcasecmp等字符串操作函数,将目标字符串读/写爆。应该使用strncpy, strlcpy, strncat, strlcat, snprintf, strncmp, strncasecmp等函数防止读写越界,3)搜索字符串时,依靠字符串结束符来判断字符串是否结束,...原创 2020-04-22 20:24:21 · 258 阅读 · 0 评论 -
C和C++重要区别
C和C++可以自然混合,C++是作为C的扩展设计的 C和C++数据类型基本相同, C和C++唯一区别是体现在函数名称上,C语言使用简单函数名,不考虑参数的个数和类型,C++总是将参数类型列表当做函数名的一部分, C++提供一些特殊的功能可以声明C函数,即C++程序可以直接声明并调用C函数...原创 2020-04-14 21:06:38 · 174 阅读 · 0 评论 -
GCC编译选项---编译模板实例化
#pragma interface 和#pragma implemetation 只会创建一个编译后模板#falt-external-templates 编译所有源文件,只有真正用到模板时才编译后的模板实例包含进来-frepo 编译后缀为。rpo,每个rpo列出对应目标文件的模板实例,然后激活打包工具collect2更新.rpo文件,指示连接程序替换最后程序中的模板-fno-im...原创 2020-04-14 20:58:12 · 701 阅读 · 0 评论 -
glib引用编译报错问题
glib.h:30:26: fatal error: glib/galloca.h: No such file or directory,需要完整编译glib库文件需要包含头文件的根目录,二级目录,三级目录,等等以此类推gstreamer也遇到此类问题...原创 2020-04-14 19:51:34 · 1074 阅读 · 0 评论 -
glib引用编译报错问题
glib.h:30:26: fatal error: glib/galloca.h: No such file or directory,需要完整编译glib库文件原创 2020-04-14 16:40:29 · 440 阅读 · 0 评论 -
sysroot 配置项不完整存在的问题
在gcc,g++引用时容易出现找不到crt0,等问题原创 2020-04-09 15:15:29 · 270 阅读 · 0 评论 -
虚函数表
虚表示类中虚函数地址的列表 class A 包含虚函数,函数被subClass B重写,则新函数的地址会取代虚函数表或者vtable中函数地址,这是由多台的需求决定如果subclass B被强制转换为class A的对象,那么虚函数的调用就会用到该表,实际就是对B中函数的调用,而不是A中...原创 2020-04-07 20:15:25 · 112 阅读 · 0 评论 -
模糊连接信息
目标文件不会执行 对优化代码和解析引用非常重要 不是普通简单的与特定名字,特定地址相关的处理过程原创 2020-04-07 20:10:45 · 110 阅读 · 0 评论 -
c++帮助信息
c++ --helpUsage: c++ [options] file...Options: -pass-exit-codes Exit with highest error code from a phase. --help Display this information. --target-help ...原创 2020-04-07 20:08:16 · 565 阅读 · 0 评论 -
C++filt的帮助信息
c++c++ c++filt nvidia@nvidia-vm:~/dev/git-src/atris2$ c++filt --helpUsage: c++filt [options] [mangled names]Options are: [-_|--strip-underscore] Ignore first leading underscore [-n...原创 2020-04-07 20:07:40 · 194 阅读 · 0 评论 -
C++ 标准库
一般C_+_+标准库为libstdc++.a库文件很大 库文件包含很多不会用道德例程 如果需要静态链接则可以-lsupc,libsupc++.a 质保函基础语言定义部分原创 2020-04-07 19:38:23 · 425 阅读 · 0 评论 -
g++和gcc的不同
g++是gcc的一个特殊版本,默认编译的语言设置为C++语言, 可自动连接到标准C++库,而不是默认的标准C库文件综上遵守源文件命名约定,且指出库名,即可用gcc编译和连接C++程序,如下gcc helloworld.cpp -lstdc++ -o helloworld...原创 2020-03-30 11:13:20 · 178 阅读 · 0 评论 -
两种宏定义函数
#define errout(fmt,...) fprintf(fmt,__VA_ARGS__) #define errout(fmt,args,...) fprintf(fmt,args,...)原创 2020-03-23 16:03:31 · 185 阅读 · 0 评论 -
C语言条件表达式左值
((a > 5)? b:c) = 100;原创 2020-03-23 09:51:33 · 307 阅读 · 0 评论 -
函数内嵌和嵌套函数
函数内嵌类似函数内联,函数嵌套是函数实现在函数体内部,只有父函数能够调用 嵌套函数不能在外部声明 可以将嵌套函数的地址传递给其他函数,并由其他函数调用,就好像可以传递其他局部变量的地址 嵌套哈数和父函数可访问同样地变量,但只能访问比钱凹函数声明枣的局部变量 嵌套函数可以使用goto语句跳转到函数之外的某个标号位置,该位置应该位于父函数内部 嵌套函数可使用goto语句跳转至函数之外某个标号...原创 2020-03-31 23:16:09 · 752 阅读 · 0 评论 -
枚举不完全类型
enum可以声明枚举,无需明确指定列表中的每个值,声明方式类似struct 不完全枚举可用于函数原型声明指针 enum color_list原创 2020-03-20 17:15:22 · 423 阅读 · 0 评论 -
C语言条件操作数省略
条件表达式中,条件真假有表达式结果是否为零决定,如下,如果y非零则y赋值x,否则xx = y ? y:z;如果第一次计算表达式y为非零,则y会被计算两次,如下y的第二次计算被忽略x = y?:z;如果表达式y有副作用,而不应该多次计算,此方法有用...原创 2020-03-20 17:06:12 · 258 阅读 · 0 评论 -
C++ 使用宏定义存在的问题
#define evenint(x) \ ({int y=x; \ (2*(y/2) == y ? y:y+1);\ })此功能在C++中不能正常工作,所以在C++程序额头文件中使用会产生问题,原因:来自宏内部临时变量的析构函数,因为它的运行早于内嵌函数的析构函数...原创 2020-03-20 16:56:08 · 692 阅读 · 1 评论 -
__attribute__的使用
void fatal_error() __attribute__ ((noreturn ));void fatal_error(char *msg) { fprintf(stderr, "FATAL ERROR: %s\n", msg); exit(1);}主要是为了让编译程序可以执行优化处理分配给桉树的属性位于函数原型的声明声明中...原创 2020-03-20 16:13:06 · 250 阅读 · 0 评论 -
GNU之变长数组
void combine(char *str1, char *str2) { char outstr[strlen(str1) + strlen(str2) + 2]; strcpy(outstr, str1); strcat(outstr, " "); strcat(outstr, str2); printf("%s\n", outstr);}//变长数组作为参数传递voi...原创 2020-03-20 15:53:52 · 194 阅读 · 0 评论 -
__alignof__函数对齐的使用
/* ============================================================================ Name : gcc_example_align.c Author : Version : Copyright : Your copyright notice Description : ...原创 2020-03-20 15:34:01 · 1400 阅读 · 0 评论 -
常见宏定义符号
常见宏定义#include#define#ifdef#ifndef#else#elif#endif#undef#error#line#pragma#warning#include_text 同#include## 连接操作符,可用于宏内将两个字符串连接成一个...原创 2020-03-20 13:59:28 · 595 阅读 · 0 评论 -
GCC常用的arm选项
gcc arm选项-mabort-on0noreturn 可以在noreturn函数结尾处生成abort函数-malignment-traps 生成的代码即便MMU对其打开仍然不会陷入陷阱,生成的代码是一系列字节访问代码,而不是一个直接的半字访问,arm4以上将忽略此选项,因为他们均能直接访问内存中的半字-mno-alignment-traps 生成的代码假设MMU不会陷入非对齐访问,当...原创 2020-03-20 13:52:39 · 1723 阅读 · 0 评论