我正在关注一个网站(http://wiki.osdev.org/GCC_Cross-Compiler)来学习如何针对不同架构交叉编译一些代码。因此,第一步是针对特定目标下载并编译 Binutils。
该网站说用 i686-elf 分配变量 TARGET 因为这样 binutils 将能够处理 $TARGET 指定格式的代码。
export PREFIX="$HOME/opt/cross"
export TARGET=i686-elf
export PATH="$PREFIX/bin:$PATH"
所以,我的问题是
我可以获得 Binutils 支持的目标列表吗?
如果变量TARGET可以包含任何东西或者必须是Binutils支持的东西,即如果TARGET是binutils不理解的东西,那么在编译binutils源代码时会出现错误吗?
从未见过这个问题的答案,所以我会给来自各种搜索引擎的人进行大学尝试。如果有人从源软件下载或克隆 binutils
git clone git://sourceware.org/git/binutils-gdb.git
然后阅读 binutils 的解释
https://sourceware.org/binutils/binutils-porting-guide.txt
你会找到答案的。
TL;博士
读取bfd目录中config.bfd的内容
所有支持的目标都列在
中cd /path/to/git/clone/of/binutils/bfd
注意上述目录中带有elf32-[SOME_NAME].c和elf64-[SOME_NAME].c的文件,这些是您支持的targets。
前
elf32-cr16.c
翻译为,
--target=cr16-elf
我刚刚克隆了 binutils 并发现
gdb/README
有最有用的提示(link):
configure'调用Bourne shell脚本'config.sub'来映射 全名的缩写;如果您愿意,您可以阅读脚本,或者 你可以用它来测试你对缩写的猜测——例如:configure' script accompanying GDB does not provide any query facility to list all supported host and target names or aliases.
现在祝你制作三胞胎好运。