linux – Can Clang编译代码用GCC编译.a libs?

前端之家收集整理的这篇文章主要介绍了linux – Can Clang编译代码用GCC编译.a libs?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我的项目目前正在 gcc下编译.它使用Boost,ZeroMQ作为静态.a库和一些.so库,如SDL.我想一路铿锵但不是现在.我想知道是否有可能编译使用.c和.so库的代码在gcc下使用clang编译?

解决方法

是的,你通常可以使用与GCC编译库的clang(反之亦然,使用gcc与CLANG编译库),因为实际上它不是编译而是 linking是相关的.你可能不走运,并且会感到不愉快.

原则上你可以对用于链接相关库的libstdc版本有一些依赖(如果它们用C编码).实际上,这通常无关紧要.

在C中,name mangling理论上可能是一个问题(可能存在一些极端情况,即使两个不同版本的g之间存在不兼容性).同样,在实践中,它通常不是问题.

因此,通常你可以将CLANG(甚至不同但非常接近的版本)与GCC混合,但你可能会有令人不快的意外.任何C编译器(无论是CLANG还是GCC)应该期望能够使用相同的编译器和版本编译和链接整个软件(和所有库).这就是为什么升级分发中的编译器需要做很多工作的原因:分发制造商必须确保所有包都能很好地编译(并且它们确实会出现意外!).

猜你在找的Linux相关文章