OSDT开源开发工具大会2017话题和赞助征集

*************************************************************************
话题和赞助征集

开源开发工具大会(OSDT2017)
时间:2017年10月下旬(待定)
HelloGCC工作组 (www.hellogcc.org
************************************************************************

开源开发工具大会(原HelloGCC技术讨论会)是开源软件开发者的交流会,您可以在这里分享自己在开源软件方面的开发工作,研究成果,经验学习。我们的话题主要面向开源开发工具。

话题内容可以为:
* GNU工具链(GCC,GDB,Binutils等)。
* LLVM工具链,以及基于LLVM的衍生工作。
* 深度学习调试或性能分析工具。
* 面向RISCV等新硬件的基础软件支持。
* 嵌入式AI基础库、计算库、加速框架。
* 模拟器及仿真器。
* 其它开源开发工具。

话题形式可以为:
* 对自己在某开源软件工作上的介绍。
* 对开发工具的介绍及使用经验分享。
* 参与开源社区工作的体验和感受。
* 其它形式,比如闪电演讲。

如果您有相关话题,欢迎和我们联系:
* 发送邮件到 hellogcc@freelists.org (需要先订阅:http://www.freelists.org/list/hellogcc
* 登陆freenode IRC #hellogcc 房间

往届会议:
* OSDT 2016: http://www.hellogcc.org/?p=34295
* OSDT 2015: http://www.hellogcc.org/?p=34190
* OSDT 2014: http://www.hellogcc.org/?p=33910
* HelloGCC 2013: http://www.hellogcc.org/?p=33518
* HelloGCC 2012: http://linux.chinaunix.net/hellogcc2012
* HelloGCC 2011: http://linux.chinaunix.net/hellogcc2011
* HelloGCC 2010: http://linux.chinaunix.net/hellogcc2010
* HelloGCC 2009: https://sites.google.com/site/hellogccworkshop/hui-yi-ri-cheng

如果贵公司有意提供赞助,欢迎和我们联系 hellogcc.workgroup@gmail.com

[资源] 中科院开源协会的GCC等GNU软件镜像站点上线

中科院开源协会最近上线了一个开源软件镜像站点, 提供包括GCC在内的众多GNU软件源代码的镜像. 服务器部署在中国科技网上, 国内访问的速度还可以, 可以尝试下.

镜像地址: http://mirrors.opencas.cn/gnu/gcc/

中科院开源协会地址: http://www.opencas.org/

看了一下, 还有一个有吸引力的地方是提供了Android相关SDK的下载. 这点对于希望接触Android开发的爱好者帮助很大 🙂

Linux下那么多Tracer如何选择

如果你想要在linux下调调kernel, 抓抓程序的性能, 那么首先想到的可能是 OProfile 和 Linux Perf. 但是显然, 开源有一个非常显著地你无法回避的特点, 就是你会有太多的选择: perf, oprofile, systemtap, dtrace4linux, lttng, kgtp, ktap, sysdig, ftrace, eBPF. 是不是已经眼花了? 那么你不能错过这篇文章:

http://www.brendangregg.com/blog/2015-07-08/choosing-a-linux-tracer.html

介绍了目前常用的各类工具:

  1. ftrace
  2. perf_events
  3. eBPF
  4. SystemTap
  5. LTTng
  6. ktap
  7. dtrace4linux
  8. OL DTrace
  9. sysdig

作者非常细心的列出了大量的工具原理及使用教程, 保证会花掉你大把的晚上才能看完.

其实我日常使用的只有 perf, 只能算是 ‘most people’ 🙂

‘#include_next’ 的用途

最近在阅读开源项目代码的时候看到一个很少见的预处理命令:

#include_next

查询了一下, 并不是标准中的一部分, 属于 GNU 扩展, 使用的场合也比较少, 在某些新旧代码共存时或许会比较常见.

https://gcc.gnu.org/onlinedocs/cpp/Wrapper-Headers.html

2.7 Wrapper Headers

Sometimes it is necessary to adjust the contents of a system-provided header file without editing it directly. GCC’s fixincludes operation does this, for example. One way to do that would be to create a new header file with the same name and insert it in the search path before the original header. That works fine as long as you’re willing to replace the old header entirely. But what if you want to refer to the old header from the new one?

You cannot simply include the old header with ‘#include’. That will start from the beginning, and find your new header again. If your header is not protected from multiple inclusion (see Once-Only Headers), it will recurse infinitely and cause a fatal error.

You could include the old header with an absolute pathname:

#include “/usr/include/old-header.h”

This works, but is not clean; should the system headers ever move, you would have to edit the new headers to match.

There is no way to solve this problem within the C standard, but you can use the GNU extension ‘#include_next’. It means, “Include the next file with this name”. This directive works like ‘#include’ except in searching for the specified file: it starts searching the list of header file directories after the directory in which the current file was found.