问题相对简单:如何在与编译器主机相同的架构上构建针对2.4 ABI的4.x系列(以及binutils和朋友)的GCC?
主机系统是x86或x86_64,唯一的要求是只要ABI匹配,构建的ELF文件就在旧内核上运行。 (存在内核源/头)
为了将其链接,也需要兼容的libc。但是,我也可以动态链接它,因为我知道(g)libc版本。
任何指针都会非常感激。我对crosstool-ng有些熟悉,但这似乎不再支持2.4内核了(原因很明显)。
答案 0 :(得分:1)
可能最简单的方法是在旧操作系统上设置现代工具链。
RHEL 2.1或3可能是最好的,因为直到最近才支持它们。
编译gcc 4可能很棘手,因为你也需要数学库。您可能需要采取多阶段方法。
编辑:
用于编译更新的gcc:
这样的事情:
cd ~/software
tar xjf $DOWNLOAD/gcc/gcc-core-${GCCVER}.tar.bz2 || failure "unpack gcc failed"
tar xjf $DOWNLOAD/gcc/gcc-g++-${GCCVER}.tar.bz2 || failure "unpack g++ failed"
cd gcc-${GCCVER}
tar xjf $DOWNLOAD/gmp-5.0.2.tar.bz2 || failure "unpack gmp failed"
#tar xjf $DOWNLOAD/gmp-4.3.2.tar.bz2 || failure "unpack gmp failed"
ln -s gmp-* gmp
tar xjf $DOWNLOAD/mpfr-2.4.2.tar.bz2 || failure "unpack mpfr failed"
#tar xjf $DOWNLOAD/mpfr-2.4.2.tar.bz2 || failure "unpack mpfr failed"
ln -s mpfr-* mpfr
tar xzf $DOWNLOAD/mpc-0.9.tar.gz || failure "unpack mpc failed"
ln -s mpc-* mpc
cd ..
mkdir gcc-build
cd gcc-build
../gcc-${GCCVER}/configure --prefix=/opt/tools || failure "configure failed"
make || failure "make failed"
make install || failure "install failed"
答案 1 :(得分:0)
我认为你可能应该在这种情况下构建一个GCC交叉编译器,并且你应该编译GLibc来处理旧的2.4内核的依赖。
但是,您是否只是尝试编译代码,并将其与旧的2.4内核兼容的Glibc库链接?我认为这应该有用。
您是否尝试在旧系统上运行二进制文件(使用最近的GCC在最近的系统上获得简单方法)?什么不能按预期工作?
问候。