构建针对FreeBSD的multilib GCC交叉编译器?

时间:2015-04-23 18:40:47

标签: c linux gcc cross-compiling freebsd

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} gccgcc_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运行时(.specslibgcc),在我的构建期间,它只是为x86_64构建的。

0 个答案:

没有答案