GCC:设置传递给链接器的架构

GCC:设置传递给链接器的架构

GNU C 编译器将错误的体系结构名称传递给链接器。例如gcc helloworld.i抛出错误ld: unknown/unsupported architecture name: -arch arm。经过对 LD 的一些实验后,这似乎armv7是我应该使用的架构。编译和组装操作似乎工作正常。

看来编译器集合(iphone-gcc)旨在与通过开源 Darwin CC 工具提供的旧版本链接器一起使用,而不是我在 CC 工具集合之外作为独立安装提供的较新的 LD64 。有没有办法告诉 GCC 将另一个架构传递给链接器?-Wl,-arch,armv7or传递-Xlinker -arch -Xlinker armv7给 GCC 会产生相同的错误。

答案1

您不应该零碎地升级您的工具链。这些部分必须协同工作。 GNU 工具允许如此多的变化,因此必须将各个部分设置为协同工作,特别是对于交叉编译器

如果您出于某种原因需要更新的版本ld,您应该构建一个完整的工具链来支持它。

答案2

采纳@Warren Young 的建议并升级工具链的其余部分,而不是仅升级链接器。

对于 ARM 上的 Darwin 9 及更高版本,CoolStar 的工具链建议从 BigBoss 存储库获取。该工具链包含 LLVM+Clang 作为过时的 iphone-gcc 的替代品,以及 LD64 和较新的 Darwin CC Tools。看iPhone 开发维基(有点过时)有关 iphone-gcc 和 LLVM+Clang 之间更详细的比较。

答案3

如果您使用 EasyBuild 工具,您可以自动交付多个工具链: https://hpc.uni.lu/users/software/#sw-toolchain
FI。看看 ClangGCC

现在,GCC 拥有一个系统spec strings指定它如何与其他程序一起工作并提供给其他程序: http://gcc.gnu.org/onlinedocs/gcc/Spec-Files.html

您的任务是根据您的需要调整它们;完成后,请记录它和/或制作一个其他人可以依赖的 EasyBuild 工具链!

相关内容