打包 LLVM 的建议

发布于 2021-09-16 13:12:27 字数 1450 浏览 1315 评论 0

LLVM 设置了特定的默认配置选项来确保开发者在受限的平台上不会搞破坏。这些设置对于桌面系统来说不是最佳的,所以我们希望打包者(packagers)(e.g., Redhat, Debian, MacPorts, etc.)来修改它们。此文列出了我们希望你改变的设置。

LLVM 的 API 在每一个版本中都有改变,所以用户可能会希望同时安装例如 LLVM-2.6 和 LLVM-2.7 来支持为各版本开发的应用。

编译参数

在优化并去除断言之后,LLVM 运行的会更快。然而这样的编译与未定义 NDEBUG 的用户并不兼容,并且由于缺少断言使得调试用户代码中的问题更加困难。我们建议用户同时安装优化的和调试版本的 LLVM。下面给出相关的configure flags:

--disable-assertions

定义 NDEBUG 编译 LLVM。改变了 LLVM 的 ABI。也可是设置make环境变量 DISABLE_ASSERTIONS=0|1 。这默认会忽略优化设置,但是会降低速度。

--enable-debug-symbols

使用 -g 选项编译 LLVM。也可以通过改变 make 的环境变量 DEBUG_SYMBOLS=0|1 来改变。优化时默认是关闭的,所以你应当打开它来使得用户可以调试它们的程序。

--enable-optimized

(对于svn checkouts)使用 -O2 来编译 LLVM,并且默认关闭调试符号。也可以通过改变make的环境变量也可以通过改变make的环境变量来改变。在非 checkout 中默认是打开的。

C++ 特性

RTTI

LLVM 默认关闭了 RTTI。添加 REQUIRES_RTTI=1 到 make 的环境变量中来打开它。这将允许用户编译带有 RTTI 的并且从 LLVM 继承的类。

共享库

使用 --enable-shared 来配置来编译 libLLVM-<major>.<minor>.(so|dylib) 并且给工具来链接。这将会用一些打开时间来换取二进制文件的大大减小。

依赖关系

--enable-libffi

依赖于 libffi 来使得 LLVM 解释器可以调用外部函数。

--with-oprofile

依赖于 libopagent (>= version 0.9.4) 来使得 LLVM JIT 告诉 oprofile 关于函数地址和行号。

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据

关于作者

JSmiles

生命进入颠沛而奔忙的本质状态,并将以不断告别和相遇的陈旧方式继续下去。

0 文章
0 评论
84961 人气
更多

推荐作者

已经忘了多久

文章 0 评论 0

15867725375

文章 0 评论 0

LonelySnow

文章 0 评论 0

走过海棠暮

文章 0 评论 0

轻许诺言

文章 0 评论 0

信馬由缰

文章 0 评论 0

    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文