除了gcc外,还有哪些牛逼的编译器。为什么调试的时候需要在编译选项中添加-g,调研readelf命令

Clang:是一个c语言、c++、Objective-C语言的轻量级编译器,基于LLVM、发布于LLVM BSD许可证下的c语言、c++、Objective-C、Objective-c++编译器。它与GNU C语言规范几乎完全兼容,它能够快速编译和较少占用内存,有诊断功能,并且兼容Gcc,允许集成到各种IDE中使用LLVM’BSD’协议。

IBM XL C/C++:用于开发大型且复杂的C和C++编程语言应用。能生成可利用最新POWER8架构功能的代码,并最大限度地提高硬件利用率,还能将计算和数据卸载至NVIDIA GPU,从而加快应用运行速度,才用内含编译器的打包形式,可针对选定的Linux版本运行大端或小端模式。

 

为什么调试的时候需要在编译选项中添加-g

 

默认生成的可执行文件是无法使用gdb来跟踪或调试的,因为可执行程序中没有可供gdb调试使用的特殊信息,为了将必要的调试信息整合到可执行文件中,我们需要用到-g选项,这样生成的可执行程序,倘若出现问题,便可以使用gdb找出问题具体出现的位置,便于问题的解决。

        “-g”标志是对程序进行调试行编译时常用的选项。我们需要给每一个需要调试的源文件都加上这个选项。它将使用特殊版本的c语言标准库完成编译和连接操作,给库函数加上程序调试方面的支持,编译器会把这些标志自动传给链接器。

 

Readelf 命令: http://man.linuxde.net/readelf

猜你喜欢

转载自blog.csdn.net/Atalanta1/article/details/83410444