gpt4 book ai didi

linux - 在 64 位 linux 机器上静态编译 32 位程序

转载 作者:太空宇宙 更新时间:2023-11-04 11:22:37 24 4
gpt4 key购买 nike

我使用 configure, make, make install 安装 libevent 库。我的电脑是

[esolve@kitty esolve]$ uname -r
3.6.10-2.fc16.x86_64

我写了一个使用 libevent 的程序。由于我想将此程序分发到许多未安装 libevent 的远程主机。所以我想静态编译程序,使用

gcc -o myprogram mypro.c /usr/local/lib/libevent.a -lpcap -lrt

现在我注意到一些远程机器是 32 位的,而不是 64 位的

所以我想用-m32来编译

gcc -m32 -o myprogram mypro.c /usr/local/lib/libevent.a -lpcap -lrt

但我有错误:

/usr/bin/ld: i386:x86-64 architecture of input file `/usr/local/lib/libevent.a(event.o)' is incompatible with i386 output
/usr/bin/ld: i386:x86-64 architecture of input file `/usr/local/lib/libevent.a(log.o)' is incompatible with i386 output
/usr/bin/ld: i386:x86-64 architecture of input file `/usr/local/lib/libevent.a(evutil.o)' is incompatible with i386 output
/usr/bin/ld: i386:x86-64 architecture of input file `/usr/local/lib/libevent.a(select.o)' is incompatible with i386 output
/usr/bin/ld: i386:x86-64 architecture of input file `/usr/local/lib/libevent.a(poll.o)' is incompatible with i386 output
/usr/bin/ld: i386:x86-64 architecture of input file `/usr/local/lib/libevent.a(epoll.o)' is incompatible with i386 output
/usr/bin/ld: i386:x86-64 architecture of input file `/usr/local/lib/libevent.a(signal.o)' is incompatible with i386 output
collect2: ld returned 1 exit status

有什么解决方法吗?谢谢!

最佳答案

如果你想在 32 位模式下使用你自己编译的库(例如 libevent)你应该配置 CC='gcc -m32' 让它在 32 位模式下编译。

如果你想同时拥有同一个库的 32 位和 64 位版本,你应该构建库两次,使用不同的 configure 选项(不要忘记 make clean 在构建之间),也许改变 --prefix--libexec-prefix

您还可以考虑在您的 chroot 环境中拥有完整的 32 位分布(然后您需要 bind 挂载一些目录,例如 /proc, /dev, 等等...).

关于linux - 在 64 位 linux 机器上静态编译 32 位程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17152869/

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