我正在尝试在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
然而,这仅将错误消息更改为上面所示的错误消息。我失去了前一个,但我想它不再重要。
请注意,现有答案对我没有帮助,所以这不重复。
答案 0 :(得分:1)
尝试确保新的32位库位于库搜索路径中。您可以使用ldconfig
命令对此进行验证,如果未列出库的目录,请使用此网页中的提示:http://www.cyberciti.biz/faq/linux-setting-changing-library-path/
我不知道以上是你问题的原因,但值得一试?
答案 1 :(得分:-1)
apt-get install gcc-multilib
应该这样做。