cmake – 一起构建clang和libc的正确方法(bootstrap)

我想建立一个最近的clang llvm libc.我目前正在使用一个系统(基于CentOS 6.6),我不能轻易获得clang的二进制包,但是我可以通过设置一些环境变量来设置一个最近足以构建clang(例如4.9)的GCC.

我想要我的版本

> Portable,即没有硬编码路径(例如使用-rpath $ORIGIN)
>既不依赖于系统gcc也不依赖于导入的gcc 4.9(即他们的C/C++运行时)
>特别是,编译器,编译器作为库libclang.so,以及使用新编译器构建的程序都不应该依赖于libstdc,但它们应该使用新构建的libc.

我可以做到这一点,但它涉及将clang,llvm,libc,libc abi(以及我可能已经忘记的东西)放在一棵树上,从一个构建目录构建clang,然后盲目地设置大量标记并从一秒钟再次构建它构建目录.

是否有另一种正确的方法来引导libc?我认为必须有,因为llvm& amp;如上所述,clang是自给自足的.

我自己一直对此感到好奇,并且不认为有一种适当的,“有福的”引导方式与李
公元前

根据我的经验,从存储库安装的clang依赖于libstdc,从二进制安装的clang也是如此
http://www.llvm.org/releases/download.html#3.7.0可用的发行版(我已经尝试过Ubuntu 14.04的版本). repo clang和llvm.org之间的一些区别:

>我还没有见过libc的回购铿锵声;我不得不建造它
分别.来自llvm.org的Clang确实附带了libc
 .
> llvm.org clang似乎有相对于的库位置
它居住的地方,硬编码;对于存在于lib目录中的一些头文件(!)也是如此.

考虑到来自存储库和llvm.org的clang依赖于libstdc,我会说没有正确的wa
你摆脱了这种依赖,至少在我使用的Linux系统上没有,包括Ubuntu,Amazon Linux,CentOS和Fedora.

然而,话虽如此,我发现即使使用依赖libstdc的clang也可以生成依赖于libc而不是libstdc的程序.尽管有可能构建一个本身并不依赖于libstdc的clang llvm设置,正如你已经发现的那样,我认为没有必要跳过所有这些环节.

如果你觉得它有用,我会在http://www.omniprog.info/clang_no_gcc.html发表一篇简短的文章

我还在尝试所有这些,如果我遇到一些有趣的东西,我会更新这个答案.

相关文章
相关标签/搜索