随笔分类 -  c

摘要:GCC Function instrumentation机制可以用来跟踪函数的调用关系,在gcc中对应的选项为“-finstrument-functions”。可查看gcc的man page来获取更详细信息。编译时如果为gcc加上“-finstrument-functions”选项,那在每个函数的入... 阅读全文
posted @ 2015-10-23 16:14 微信公众号--共鸣圈 阅读(5212) 评论(0) 推荐(0) 编辑
摘要:nm *.so | c++filtc++filt symblo 阅读全文
posted @ 2015-10-23 12:02 微信公众号--共鸣圈 阅读(483) 评论(0) 推荐(0) 编辑
摘要:link时,若liba.a依赖libb.a,若这样写 -lb -la,则链接通不过,gcc有个选项:-Xlinker ,可以让gcc在链接时反复查找依赖库,用法 : gcc -shared -o libxx.so xx.o -L. -Xlinker "-(" -lb -la "-)" -Xlinke 阅读全文
posted @ 2015-10-09 03:07 微信公众号--共鸣圈 阅读(1556) 评论(0) 推荐(0) 编辑
摘要:对于so动态库及可执行文件,可以直接调用不带参数的strip (-s, 即--strip-all)去除大多数不必要的信息。因为so库非常标准,所以strip之后仍然可以进行完美的动态连接;而可执行文件已经进行了链接,所以也可以用strip进行完美的strip。对于静态库和目标文件(.o文件),不能直... 阅读全文
posted @ 2015-10-07 14:51 微信公众号--共鸣圈 阅读(3557) 评论(0) 推荐(0) 编辑
摘要:上句大多数时候(和平台有关)可以正确判断是否是以fPIC选项编译的,如果输出为空,基本可以表明不是以fPIC选项编译的,若有输出,基本上表明是以fPIC选项编译的。另外,由于静态库是多个目标文件的打包,所以最好把静态库解包之后再对每个目标文件进行判断,这样比较准确。 如果要用在动态库种,o文件和a文 阅读全文
posted @ 2015-10-07 01:43 微信公众号--共鸣圈 阅读(7657) 评论(0) 推荐(1) 编辑
摘要:一般情况下,编译的时候可能需要加 -g 选项,对于android ndk的-g选项添加请参见android类目下的另一篇文章。 以下文章中的__builtin_return_address() 宏,若要确认它是否在编译器源码中存在,可以在编译器源码中搜索 return_address, 若找到则可以 阅读全文
posted @ 2015-09-16 16:50 微信公众号--共鸣圈 阅读(3196) 评论(0) 推荐(0) 编辑
摘要:https://github.com/ruanyf/articles/blob/master/2015/2015-02-19-make.md 代码变成可执行文件,叫做编译(compile);先编译这个,还是先编译那个(即编译的安排),叫做构建(build)。 Make是最常用的构建工具,诞生于197 阅读全文
posted @ 2015-09-13 00:05 微信公众号--共鸣圈 阅读(516) 评论(0) 推荐(0) 编辑
摘要:3 Kbuild文件 大部分内核中的Makefile都是使用Kbuild组织结构的Kbuild Makefile。这章将介绍Kbuild Makefile的语法。 对于Kbuild文件名来讲,Kbuild编译系统更倾向于使用"Makefile"这个名字,当然"Kbuild"也是可以用的。但如果"Ma 阅读全文
posted @ 2015-09-06 18:59 微信公众号--共鸣圈 阅读(1114) 评论(0) 推荐(0) 编辑
摘要:label只在函数内有效 阅读全文
posted @ 2015-09-02 11:37 微信公众号--共鸣圈 阅读(409) 评论(1) 推荐(0) 编辑
摘要:http://stackoverflow.com/questions/105659/how-can-one-grab-a-stack-trace-in-cThere's backtrace(), and backtrace_symbols():From the man page:#include ... 阅读全文
posted @ 2015-08-26 15:44 微信公众号--共鸣圈 阅读(1790) 评论(0) 推荐(0) 编辑
摘要:--sysroot=dir 的作用 如果在编译时指定了-sysroot=dir 就是为编译时指定了逻辑目录。编译过程中需要引用的库,头文件,如果要到/usr/include目录下去找的情况下,则会在前面加上逻辑目录。 如此处我们指定 -sysroot=/home/shell.albert/tools 阅读全文
posted @ 2015-08-04 17:13 微信公众号--共鸣圈 阅读(26155) 评论(2) 推荐(0) 编辑
摘要:https://www.kernel.org/doc/Documentation/zh_CN/CodingStyleChinese translated version of Documentation/CodingStyleIf you have any comment or update to ... 阅读全文
posted @ 2015-05-24 00:46 微信公众号--共鸣圈 阅读(294) 评论(0) 推荐(0) 编辑
摘要:http://blog.csdn.net/yrj/article/details/4924041、GCC的编译和安装2、预处理 #define 可以支持不定数量的参数。 例子如下: #define err(...) fprintf(stderr,__VA_ARGS__) err("%s,%d/r/n... 阅读全文
posted @ 2015-05-21 21:46 微信公众号--共鸣圈 阅读(843) 评论(0) 推荐(0) 编辑
摘要:的 阅读全文
posted @ 2015-05-20 23:35 微信公众号--共鸣圈 阅读(161) 评论(0) 推荐(0) 编辑
摘要:; 1.前言 在gcc编程中,我们比较经常用到的字符格式化输出函数是printf的,实际上gcc继承了c语言处理字符具有强大功能的风格,它提供了一系列的格式化输出函数,主要存在两个库函数文件stdio.h/stdarg.h中,具体函数如下:#includeprintf,intprintf(cons... 阅读全文
posted @ 2015-01-26 10:12 微信公众号--共鸣圈 阅读(1116) 评论(0) 推荐(0) 编辑
摘要:黄中华总结: 其实IO操作就分为4种: blocking, non blocking, multiplexing, Asynchronous, 即 阻塞,非阻塞,多路复用,异步。 最好别提同步的概念,迄今为止同步的意思基本等同于阻塞。下面的文章给除了这4种io的最好的解释。 转: http://bl 阅读全文
posted @ 2014-11-13 09:08 微信公众号--共鸣圈 阅读(355) 评论(0) 推荐(0) 编辑
摘要:What you need to do is edit the configure file. And find out this:SLIBNAME='$(SLIBPREF)$(FULLNAME)$(SLIBSUF)'SLIBNAME_WITH_VERSION='$(SLIBNAME).$(LIBV... 阅读全文
posted @ 2014-07-12 19:28 微信公众号--共鸣圈 阅读(185) 评论(0) 推荐(0) 编辑
摘要:据http://bbs.chinaunix.net/thread-2300778-1-1.html的讨论,发现还是有很多人在问通用Makefile的问题,这里做一个总结。也作为以后的参考。 笔者在写程序的时候会遇到这样的烦恼:一个项目中可能会有很多个应用程序,而新建一个应用程序则所有的Makefil 阅读全文
posted @ 2014-06-20 11:39 微信公众号--共鸣圈 阅读(785) 评论(0) 推荐(0) 编辑
摘要:$@ $@ is the name of the target. $? The $? macro stores the list of dependents more recent than the target (i.e., those that have changed since the la 阅读全文
posted @ 2014-06-20 11:33 微信公众号--共鸣圈 阅读(260) 评论(0) 推荐(0) 编辑