我使用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
有什么解决方法吗? 谢谢!
答案 0 :(得分:1)
如果要在32位模式下使用自己的编译库(例如libevent
),则应configure
使用CC='gcc -m32'
将其编译为32位模式。
如果你想同时拥有32&同一个库的64位版本你应该两次构建库,使用不同的configure
选项(不要忘记构建之间的make clean
),也许更改--prefix
或{{1} }
您还可以考虑在--libexec-prefix
环境中进行完整的32位分发(然后您需要chroot
安装某些目录,例如bind
,{{1}等等......)。