[英]Compiling 32 Bit Application on 64 Bit Linux
我正在尝试在64位Kali Linux
操作系统上为32位编译程序。
这是我的系统信息:
root@kali:~/Desktop# cat /proc/version
Linux version 3.18.0-kali3-amd64 (debian-kernel@lists.debian.org) (gcc version 4.7.2 (Debian 4.7.2-5) ) #1 SMP Debian 3.18.6-1~kali2 (2015-03-02)
当我尝试编译C
项目时,找不到-lgcc
:
root@kali:~/Desktop/Project# make
cc -o libor libor.c -fno-stack-protector -z execstack -m32 -lpthread
/usr/bin/ld: skipping incompatible /usr/lib/gcc/x86_64-linux-gnu/4.7/libgcc.a when searching for -lgcc
/usr/bin/ld: cannot find -lgcc
/usr/bin/ld: skipping incompatible /usr/lib/gcc/x86_64-linux-gnu/4.7/libgcc_s.so when searching for -lgcc_s
/usr/bin/ld: cannot find -lgcc_s
collect2: error: ld returned 1 exit status
make: *** [all] Error 1
请注意,我正在使用-m32
标志来强制编译32位。
像其他地方建议的那样,应该安装32位库,我使用以下命令进行了安装:
sudo apt-get install libc6-dev-i386
但是,这只会将错误消息更改为上面看到的错误消息。 我丢失了前一个,但是我想它不再重要了。
请注意,现有的答案对我没有帮助,因此这不是重复的。
尝试确保新的32位库位于库搜索路径中。 您可以使用ldconfig
命令进行验证,如果未列出库的目录,请使用此网页中的提示: http : //www.cyberciti.biz/faq/linux-setting-changing-library-路径/
我不知道以上是造成您问题的原因,但值得一试吗?
apt-get install gcc-multilib
应该可以。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.