gpt4 book ai didi

linux - 为 2.4.0 内核、i586 架构构建二进制文件 (telnet)

转载 作者:IT王子 更新时间:2023-10-29 00:43:53 27 4
gpt4 key购买 nike

我正在尝试交叉编译一个二进制文件以在旧的 Linux 发行版(内核 2.4.25,i586 架构)上使用。

我采取的步骤

  • 我已经下载了 landley i586 交叉编译器 ( http://landley.net/aboriginal/downloads/binaries/ )
  • 我下载了 net-utils 源:https://ftp.gnu.org/gnu/inetutils/版本 1.9.4
  • 我在我的路径中包含了交叉编译器:export PATH=/root/Documents/cross-compiler-i586/bin/:$PATH
  • 然后我构建了 telnet 二进制文件如下:LDFLAGS=”-static" ./configure --host=i586 --build=x86_64 --target=i586 --disable-ifconfig --with-ncurses-include-dir=/root/Documents/tnbuild --disable-hostname --disable-logger --disable-rcp --disable-rexec --disable-rlogin --disable-rsh --disable-tftp --disable-traceroute --disable-inetd --disable-rexecd --disable-syslogd --disable-tftpd
  • 编译成功,并使用 file 命令检查(剥离后)二进制文件:telnet: ELF 32-bit LSB executable, Intel 80386, version 1 (SYSV), statically linked, stripped

我将其与旧 Linux 系统上已有的二进制文件进行了比较,输出完全相同:ELF 32-bit LSB executable, Intel 80386, version 1 (SYSV), dynamically linked, interpreter lib/ld-linux.so.2, for GNU/Linux 2.4.0, stripped

我面临的问题

我编译的 telnet 二进制文件不能在旧的 Linux 系统上运行。抛出的错误只是“段错误”。谷歌搜索这个错误得知它可能是由于体系结构的差异(i586?),但我不知道如何修复它,因为"file"命令输出完全相同的工作二进制文件以及失败的二进制文件.

然后我偶然发现了这个话题:GCC Cross compile to a i586 architecture (Vortex86DX) ,但由于它没有被追求,我不确定我是否真的应该为 i586 编译所有工具链,以及我需要怎样做。

最佳答案

您是否有特定原因想要交叉编译它而不是仅仅针对通用 32 位 i386 进行编译?如果 CPU 不支持,您可能需要禁用某些编译器优化,但您可能不需要创建静态链接的二进制文件。

These instructions用于编译 32 位 (-m 32) 似乎足以创建 telnet 二进制文件。

它们归结为:

apt-get install gcc-multilib;
./configure CFLAGS='-m32' -disable-ifconfig \
--with-ncurses-include-dir=/root/Documents/tnbuild \
--disable-hostname --disable-logger --disable-rcp \
--disable-rexec --disable-rlogin --disable-rsh \
--disable-tftp --disable-traceroute --disable-inetd \
--disable-rexecd --disable-syslogd --disable-tftpd
make

关于linux - 为 2.4.0 内核、i586 架构构建二进制文件 (telnet),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40271027/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com