从哪里获得交叉链接?

时间:2013-05-17 07:16:38

标签: llvm clang ld

我发现提供llvm-clang的几个选项我可以编译到其他平台。例如,这将编译为ios:

clang -cc1 -triple arm-apple-darwin -emit-obj -mrelax-all -disable-free -main-file-name six.c -pic-level 1 -mdisable-fp-elim -masm-verbose -target-abi apcs-gnu -target-cpu arm7tdmi -msoft-float -mfloat-abi soft -target-feature +soft-float -target-feature +soft-float-abi -target-feature -neon -ferror-limit 1 -fmessage-length 122 -stack-protector 1 -mstackrealign -fblocks -fsjlj-exceptions -fcolor-diagnostics prog.c -o -c

因此,您将获得prog.o,您需要将其复制到本机平台并与本机ld链接。但是已经为该平台编译了目标文件!

现在最后一步是避免在远程使用本机链接器。我需要一个交叉链接器。但在哪里得到一个?或者llvm是否包含一个,我只需要使用正确的选项?或者我需要在跨平台的支持下组装GNU LD?根据我的经验,如果没有专业知识,就无法编写LD。

1 个答案:

答案 0 :(得分:2)

我在http://ellcc.org使用clang时使用的gnu工具的版本。我在Linux下构建(你没有提到主机操作系统)。我构建了汇编程序,ld和其他实用程序,以及gdb来支持ARM,i386,Microblaze,Mips,PowerPC,PowerPC64和X86_64。我构建的很酷的事情是我利用GNU工具的能力来编译以支持多个目标。 ld gdb ,大​​多数实用程序都支持所有处理器。只有 as 需要为每个目标设置单独的二进制文件。