摘要: llvm-ld
已经从删除LLVM 3.2发布 。 我试图找出如何在我的构建系统使用铛在它的位置。
请注意,我想出答案我自己的问题而写,但我仍然张贴在情况下,它是别人有用。 备选答案也欢迎。
联系方式 :
我有一个构建过程,其首先生成位码使用clang++ -emit-llvm
。 然后,我走位码文件,并将它们与链接在一起llvm-link
。 然后我采用了一些标准优化过程与opt
。 然后,我申请另一个自定义编译过程与opt
。 然后,我申请的标准优化过程再次使用opt
第三次。 最后,我从最后运行的输出opt
和使用llvm-link
与相应的库链接到生成可执行我。 当我试图取代llvm-link
与clang++
在这个过程中,我得到的错误信息: file not recognized: File format not recognized
为了使这个问题更具体的我创造了什么,我试图做一个简单的例子。 首先有两个文件,我想编译和链接在一起
test1.cpp:
#include <stdio.h>
int getNum();
int main()
{
int value = getNum();
printf("value is %d\n", value);
return 0;
}
测试2.cpp
int getNum()
{
return 5;
}
我执行的命令的顺序如下:
clang++ -emit-llvm -c test1.cpp test2.cpp
llvm-link -o test.bc1 test1.o test2.o
opt test.bc1 -o test.bc2 -std-compile-opts
(请注意,我目前正在运行LLVM 3.1,但我想弄清楚,会为LLVM 3.2工作步骤。我认为我应该能够使LLVM 3.1版本工作中使用铛,而不是LLVM-LD正确)
然后,如果我运行:
llvm-ld test.bc2 -o a.out -native
一切都很好,并a.out
打印出5。
但是,如果我运行:
clang++ test.bc2 -o a.out
然后,我得到的错误信息:
test.bc2: file not recognized: File format not recognized clang-3:
error: linker command failed with exit code 1 (use -v to see invocation)
很显然,我知道我可以通过直接在.cpp文件运行铛生成一个可执行文件。 但我想知道什么是最好的方式来整合clang
与opt
是。