【发布时间】:2014-03-20 15:44:28
【问题描述】:
Raspberry Pi 需要大量时间来编译 C 代码。 我想加速编译。但是我得到一个编译错误。
为此,由于我已经在我的 PC 上编写代码,我想使用我的 PC,我想使用 LLVM(随 cygwin 提供)来生成可执行文件的 LLVM 汇编语言版本。然后,将其发送到 Raspberry Pi 以最终转换为本机 (ARM) 可执行文件。
我希望能够更快地获得可执行文件,因为我可以在链接 (llvm-link) 之前在我的多核机器上将我的代码并行编译为 LLVM 语言。 我希望 Raspberry Pi 本身的最后一步,将 LLVM 语言转换为可执行二进制文件会很短。
我们来看一个示例代码:
#include <stdio.h>
int main(){
printf("0");
return 0;
}
然后在我的电脑上运行
clang a.c -emit-llvm -S
这会生成一个名为 a.s 的文件,它是 .c 文件的 LLVM 语言版本
然后,我将 a.s 发送到 Raspberry Pi 并在其上运行命令 llc -filetype=obj a.s 以生成 a.s.o 目标文件。
但是当我想从这个目标文件在 Rasp Pi 上创建一个可执行文件时,我得到一个错误:
clang a.s.o -o a.out
/usr/bin/ld: error: a.out uses VFP register arguments, a.s.o does not
/usr/bin/ld: failed to merge target specific data of file a.s.o
clang: error: linker command failed with exit code 1 (use -v to see invocation)
我尝试在最后一步将以下标志 -marm -mfloat-abi=hard -mfpu=vfp 与 clang 一起使用,但失败并出现相同的错误。
你知道如何解决这个错误或者有一些建议可以帮助我使用 LLVM 来加快我的编译过程吗?
提前致谢
【问题讨论】:
-
在此处查看答案:stackoverflow.com/questions/15330110/… - 您可以对代码使用相同的技术。
标签: c clang llvm raspberry-pi