存档

文章标签 ‘gcc’

Linux glibc源码升级

2013年2月6日 1 条评论 7,215 次浏览

1,准备工作:准备好系统,下载好glibc源代码,确保系统提供的gcc,make等满足glibc的要求(glibc的INSTALL文件内有明确说明)。 # uname -a Linux localhost.localdomain 3.7.0 #1 SMP Wed Jan 9 04:46:12 CST 2013... [阅读更多]

分类: *nix技术, 应用程序 标签: ,

gcc的编译过程及相关简介

2013年1月23日 没有评论 10,065 次浏览

我们知道,在平常编译程中所使用的gcc或g++只是一套工具集的外包封装,具体的编译工作并不是由gcc本身来完成的,而gcc为了完成整个编译工作,它直接或间接调用的工具主要包括预处理器/分析编译器/汇编器/连接器(preprocessor/parser-compiler/assembler/linker),比如cpp,cc1,cc1plus,as和ld等等。 如何查看gcc在编译过程的细节?这很简单,带上-v或-###参数(两者有差别,具体请看man手册:man... [阅读更多]

gcc中的weak和alias

2013年1月20日 没有评论 12,420 次浏览

在看glibc源代码的时候,能看到很多对函数的属性修饰,比如weak_alias(注:我当前看的是2.17版本的glibc源代码)宏里的weak和alias: /* Define ALIASNAME as a weak alias for NAME. If weak aliases are not... [阅读更多]

gcc选项-g与-rdynamic的异同

2013年1月13日 没有评论 17,415 次浏览

gcc的-g,应该没有人不知道它是一个调试选项,因此在一般需要进行程序调试的场景下,我们都会加上该选项,并且根据调试工具的不同,还能直接选择更有针对性的说明,比如-ggdb。-g是一个编译选项,即在源代码编译的过程中起作用,让gcc把更多调试信息(也就包括符号信息)收集起来并将存放到最终的可执行文件内。 相比-g选项,-rdynamic却是一个连接选项,它将指示连接器把所有符号(而不仅仅只是程序已使用到的外部符号,但不包括静态符号,比如被static修饰的函数)都添加到动态符号表(即.dynsym表)里,以便那些通过dlopen()或backtrace()(这一系列函数使用.dynsym表内符号)这样的函数使用。 看示例: #... [阅读更多]

分类: *nix技术, 跟踪调试 标签: , ,

gcc到底帮我打开了哪些具体优化选项

2012年8月18日 没有评论 5,434 次浏览

当我们使用gcc编译程序时,一般会选用某个优化编译选项,比如-O2、-O3、-Os,但这些选项使得gcc到底帮我打开了哪些具体优化选项呢?利用gcc的-Q和–help可以给我们答案: # gcc -c -Q -O3... [阅读更多]