问题标签 [llvm-clang]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
5721 浏览

compiler-errors - MAC OS X 上用于 Eclipse CDT 的 LLVM-Clang

通过 Eclipse 编译 LLVM-Clang 时遇到问题。只需在 CDT 默认提供的 hello world 示例上对其进行测试。它给出以下错误:

clang++ -O0 -emit-llvm -g3 -Wall -c -fmessage-length=0 -o src/Test.bc ../src/Test.cpp
llvm-ld -v -native -o Test src/Test.bc
内部生成器:无法运行程序“llvm-ld”:未知原因
错误:在 PATH 中找不到程序“llvm-ld”

PATH=[/usr/bin:/bin:/usr/sbin:/sbin]
发生构建错误,构建停止

我不确定它为什么抱怨 PATH 因为我可以通过终端调用 clang++ 和 llvm-ld 命令就好了。事实上,当我通过终端输入上述内容时,我收到以下错误。

clang++ -O0 -emit-llvm -g3 -Wall -c -fmessage-length=0 -o src/Test.bc ../src/Test.cpp
llvm-ld -v -native -o Test Debug/src/Test. bc
链接位码文件“Debug/src/Test.bc”
llvm-ld:错误:无法加载文件“Debug/src/Test.bc”:无法加载位码文件“Debug/src/Test.bc”:未知类型在类型表中

所以这可能不是 Eclipse 问题?从来都不是命令行编译专家,所以我的知识有限。

我正在运行狮子。通过 XCode 命令行工具安装 clang。通过 Macports 安装 LLVM。不得不手动设置我的 LLVM 路径。

Clang -v 说 3.1
LLVM 是 v3.0

0 投票
2 回答
604 浏览

c++ - LLVM 中编译单元的正确抽象是什么?

在 LLVM 中,我们有LLVMContext,它是存储单元,我们有llvm::Module,它是构建新符号(函数和类型)的地方。

我的问题是;用于编译单元的正确 llvm 抽象是什么?是Module?还是这实际上意味着更大的范围,即:共享库目标

在我看来,编译单元必须满足全有或全无的结果;它要么编译所有内容而没有错误,要么存在错误并且需要在 CU 中的任何符号可用之前对其进行修复和重新构建。在我看来,这是编译单元应该代表什么的定义

如果模块是 CU 的正确抽象,我如何将其他(正确编译的)Module对象中的符号呈现给即将构建的新模块,以便它能够找到那些?我需要添加声明还是有其他加速方法?

指向相关行clang会很有帮助

0 投票
0 回答
842 浏览

python - 使用 clang 构建 CPython 调用 /usr/bin/ld 作为最终链接,并获得“/usr/bin/ld: error: libpython3.2m.a: malformed archive header name at 8”

我正在尝试使用 llvm 的 clang 构建 CPython 3.2。它可以使用 gcc 构建。我在 Linux Mint 12 上。

编译似乎运行良好,直到最后,它尝试生成 ./python 二进制文件。我得到的错误是:

我已经尝试使用我可信赖的 Linux Mint 12 .deb 存储库中的 llvm 2.9,以及今天早些时候的 llvm SVN 主干,但两者都给出了相同的错误。

我突然想到,如果我可以说服 clang 使用 llvm-link 而不是 /usr/bin/ld 进行链接,事情可能会更好,但我在文档中看不到如何做到这一点。只是将 $LD 设置为 llvm-link 似乎没有帮助。

那些未定义的引用可能是红鲱鱼:如果我 nm -o libpython3.2m.a (或 llvm-nm -o libpython3.2m.a - 两者都有效),我可以看到这些符号中至少有一个确实被定义了(根据当然是纳米 - 其他工具可能并且可能确实有其他想法)。

最终,我想生成 llvm 位码而不是 ELF 二进制文件,但首先获得具有 llvm 的工作 python ELF 二进制文件将是一个令人满意的迷你里程碑。

我目前正在使用以下内容进行编译:

谢谢!

0 投票
1 回答
155 浏览

clang - 更新 Xcode 4.3 以使用更新的 Clang

如何配置 Xcode 4.3.2 以使用树干尖 Clang(或任何迟于 Xcode 4.3.2 附带的 Clang 的 Clang)?

0 投票
1 回答
486 浏览

clang - LLVM 和 CLANG - 一般信息

我实际上需要 CLANG 工具。请让我知道我是否可以从 GCC 4.1.2 构建 CLANG,或者我需要 LLVM。如果是这样,GCC 4.1.2 会构建 LLVM 和 CLANG 吗?

我还需要一些源到源的翻译(C++ 代码美化 - 在两者之间插入新代码和注释)参考 - 如果可能,请提供一些参考示例?

我的观察是通过 svn / git 从他们的官方网站下载 LLVM / CLANG 非常耗时。仅下载 5% 的代码大约需要 1 小时。我需要部署什么 tar 文件才能克服这个问题?

提前致谢

0 投票
1 回答
939 浏览

gcc - 如何使用多个 GCC - LLVM 和 clang

在我的盒子里,我们以 root 用户身份安装了 GCC 4.1.2,但要编译 LLVM 和 clang,我需要更高版本的 GCC。所以我在我的本地目录中下载并安装了 GCC 4.5.0

如何使现有程序引用 GCC 4.5.0 库和包含。

只是设置系统 PATH 对我有帮助,还是我需要为现有代码做任何其他事情来引用 GCC 4.5.0 套件?

0 投票
0 回答
1921 浏览

gcc - 编译器-RT CLANG LLVM

我有 GCC 4.1.2 并且喜欢使用这个 GCC 编译器版本来构建 CLANG / LLVM。我需要源到源翻译库,以便我可以根据某些要求修改现有的源代码。

最初我遇到了有关 usr/lib64/libstdc++.so.6 的问题:在 LLVM / CLANG 制作期间找不到版本“GLIBCXX_3.4.9”。所以在下载并构建 GCC 4.5.0 并安装在本地路径中。我发现 GCC 4.5.0 的 libstdc++.so.6 有 GLIBCXX_3.4.9 版本。由于我想使用 GCC 4.1.2 进行编译,因此我将动态库路径设置为:

并在“make clean”之后再次说明make。现在该错误没有发生。

但是,我在编译“Compiler-RT”模块时遇到了问题。我不确定需要 Compiler-RT 模块的目的是什么,但 LLVM 和 CLANG 似乎编译得很好。

我是否可以从下载、构建和安装中排除 Compiler-RT:

仅构建 LLVM 和 Clang

将我的共享库路径设置为使用 GCC 4.5.0 的 libstdc++.so.6 是否正确,并且 Compiler-RT 是使用 CLANG / LLVM 下载和构建它的强制步骤

我在这里找到了这个示例代码 - 我需要 Compiler-RT - 我没有看到相同的引用,但只是想确认一下?

0 投票
2 回答
1322 浏览

c++ - Clang 3.1 C++11 用户定义文字不起作用

我在使用 XCode 4.5 DP1 安装附带的 Clang 3.1 的 C++11 用户定义文字时遇到问题

编译器看起来支持它们,我可以定义一个新的文字。我可以直接调用文字函数,但是当我在代码中使用文字时,会出现编译器错误。

在 Xcode 上自动完成甚至在字符串后输入下划线时建议我的新文字:D

这是代码:

我收到以下错误:

这是 clang 的版本信息

感激地收到任何帮助:)

0 投票
2 回答
1411 浏览

gcc - 使用 Clang 进行基本的源到源转换

我已成功构建示例代码

现在我有一个要求,如果我有如下示例代码:

代码应转换为

我尝试了以下代码更改:

但输出如下:

请让我知道如何实现目标?

我也得到如下输出:

如何停止代码呈现相同的内容?只是复合块中的语句应该添加额外的语句。

0 投票
1 回答
219 浏览

objective-c - 在Objective-C中乘以预处理器常量

假设我有以下预处理器定义

#define MYNUMBER 10f;

然后我想在我的代码中使用它,如下所示:

当我这样做时,Xcode 认为我试图*用作一元指针标记而不是乘号,并导致错误。定义这样一个常数并在乘法表达式中使用它的正确方法是什么?