交叉编译器到 linux(构建和主机)到 freebsd

标签 c linux gcc cross-compiling freebsd

我正在尝试为 linux x86_64(构建和主机)编译一个 gcc 交叉编译器到 freebsd x86_64。 我试着按照这个http://marcelog.github.io/articles/articles.html然后是网络上的其他一些指南,但我继续得到这个: 代码:

...
make[3]: Leaving directory '/home/nick/Scaricati/build-gcc/x86_64-freebsd10.1/libgcc'
DEFINES='' HEADERS='' \
   ../../../gcc-4.9.2/libgcc/mkheader.sh > tmp-libgcc_tm.h
/bin/bash ../../../gcc-4.9.2/libgcc/../move-if-change tmp-libgcc_tm.h libgcc_tm.h
echo timestamp > libgcc_tm.stamp
/home/nick/Scaricati/build-gcc/./gcc/xgcc -B/home/nick/Scaricati/build-gcc/./gcc/ -B/usr/local/cross/x86_64-freebsd10.1/bin/ -B/usr/local/cross/x86_64-freebsd10.1/lib/ -isystem /usr/local/cross/x86_64-freebsd10.1/include -isystem /usr/local/cross/x86_64-freebsd10.1/sys-include  -g -O2 -O2  -g -O2 -DIN_GCC  -DCROSS_DIRECTORY_STRUCTURE  -W -Wall -Wno-narrowing -Wwrite-strings -Wcast-qual -Wstrict-prototypes -Wmissing-prototypes -Wold-style-definition  -isystem ./include  -fpic -pthread -g -DIN_LIBGCC2 -fbuilding-libgcc -fno-stack-protector -Dinhibit_libc  -fpic -pthread -I. -I. -I../.././gcc -I../../../gcc-4.9.2/libgcc -I../../../gcc-4.9.2/libgcc/. -I../../../gcc-4.9.2/libgcc/../gcc -I../../../gcc-4.9.2/libgcc/../include  -DHAVE_CC_TLS  -o _muldi3.o -MT _muldi3.o -MD -MP -MF _muldi3.dep -DL_muldi3 -c ../../../gcc-4.9.2/libgcc/libgcc2.c -fvisibility=hidden -DHIDE_EXPORTS
In file included from ../../../gcc-4.9.2/libgcc/../gcc/tsystem.h:44:0,
  from ../../../gcc-4.9.2/libgcc/libgcc2.c:27:
/home/nick/Scaricati/build-gcc/gcc/include/stddef.h:56:24: fatal error: sys/_types.h: No such file or directory
 #include <sys/_types.h>
  ^
compilation terminated.
Makefile:463: recipe for target '_muldi3.o' failed
make[2]: *** [_muldi3.o] Error 1
make[2]: Leaving directory '/home/nick/Scaricati/build-gcc/x86_64-freebsd10.1/libgcc'
Makefile:12757: recipe for target 'all-target-libgcc' failed
make[1]: *** [all-target-libgcc] Error 2
make[1]: Leaving directory '/home/nick/Scaricati/build-gcc'
Makefile:869: recipe for target 'all' failed
make: *** [all] Error 2

这是使用 TARGET=x86_64-freebsd10.1 的 gcc-4.9.2 源的 make 过程的最后日志

我做错了什么?有什么想法吗?

****** 编辑 ******

这是使用的配置:

configure --without-headers --with-gnu-as --with-gnu-ld --enable-languages=c,c++ --disable-nls --enable-libssp --enable-gold --enable-ld --target=$TARGET --prefix="$PREFIX" --disable-libgomp

最佳答案

解决了! 我没有正确设置 sysroot。

我必须在我的机器上下载(或从构建和工作系统中获取)目标系统(在我的例子中是 freebsd,所以我得到了 base.txz、lib32.txz 并且可以肯定(但我认为它们不是必需的)还有 src.txz 和 kernel.txz,然后我能够在 binutils 和 gcc 源的配置过程中设置 --with-sysroot,然后运行

$ make

# make install

对于 binutils 和 gcc,我终于得到了我的工具链!

关于交叉编译器到 linux(构建和主机)到 freebsd,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29044935/

相关文章:

linux - unix sed 命令中的陈旧文件句柄

php - MySQL 代码导致 PHP 脚本在 popen/exec 崩溃

c++ - nullptr 可以转换为 uintptr_t 吗?不同的编译器不同意

c - 从 gcc 获取混合 C 和内联汇编

python - 使用 Cython 构建未知长度的一维数组/列表/vector 的最有效方法?或者永远不应该这样做?

c - 直接跳转到函数的某些部分

linux - 网络连接后运行脚本

c - GCC 中不需要指定哪些类型的库?

c - 段错误(核心转储)和 zlib

C 字符串初始化。可能的麻烦