NB: 现在,我希望我的术语就在这里。如果没有,请随意指出正确的术语而不是" multiarch"。评论者指出正确的术语是 multilib ,所以我调整了问题的标题(但不在正文中)。
我想要实现的是构建一个在x86_64 Linux上托管和构建的交叉编译器,并针对x86_64 和 x86_32定位FreeBSD 7.x.也就是说,我希望-m32
的{{1}}和-m64
切换正常工作。
到目前为止我设法做的是在x86_64 Linux上构建一个GCC 5.1来定位FreeBSD上的x86_64。
使用gcc
告诉我编译器(驱动程序)应该准备好构建-dumpspecs
:
-m32
但显然链接器没有准备好。要查找库$ LD_LIBRARY_PATH=$MYPREFIX/lib $MYPREFIX/bin/x86_64-pc-freebsd6-gcc -dumpspecs|grep m32
%{m32:--32} %{m64:--64} %{mx32:--x32}
%{!static:--eh-frame-hdr} %{m32:-m elf_i386_fbsd} %{p:%nconsider using '-pg' instead of '-p' with gprof(1)} %{v:-V} %{assert*} %{R*} %{rpath*} %{defsym*} %{shared:-Bshareable %{h*} %{soname*}} %{!shared: %{!static: %{rdynamic:-export-dynamic} -dynamic-linker %(fbsd_dynamic_linker) } %{static:-Bstatic}} %{symbolic:-Bsymbolic}
,gcc
和gcc_s
,它会在链接阶段失败。现在我知道从哪里获取c
- 我定位的FreeBSD发行版(在本例中为x86_32,或者在FreeBSD术语中:i386)。但是我认为GCC运行时仍然需要由我构建。
查看文档时:
libc
指定是启用还是禁用multiarch 支持。默认设置是检查multiarch中的glibc启动文件 位置,如果找到文件则启用它。自动检测是 已启用本机构建,以及配置的交叉构建 --with-sysroot,没有--with-native-system-header-dir。有关multiarch的更多文档可以在以下位置找到 http://wiki.debian.org/Multiarch
听起来好像multiarch是一个仅限glibc的功能。那么多元化不是我想要的吗?我会用什么术语来代替?
我还想知道是否可以构建最近的GCC(我使用的是5.1)来定位32位和64位x86 FreeBSD 7.x吗?
如果可能的话,我错过了哪个拼图?这仅仅是调整GCC --enable-multiarch
文件以将链接器指向正确位置的问题吗?从我到目前为止看到的情况来看,仍然缺少GCC运行时(.specs
和libgcc
),在我的构建期间,它只是为x86_64构建的。