我目前正在尝试在我的 Debian 64 位上编译和链接一个 32 位应用程序,但它在链接时失败。
我正在使用(在我的 Makefile 中)编译的命令是:
gcc -Os -m32 -Wall -g -c $< -o $@
这似乎有效。
然后我链接以下命令:
gcc -m32 -lcurses $^ -o $@
这失败并给出以下错误:
/usr/bin/ld: skipping incompatible /usr/lib/gcc/x86_64-linux-gnu/4.4.5/../../../libcurses.so when searching for -lcurses
/usr/bin/ld: skipping incompatible /usr/lib/gcc/x86_64-linux-gnu/4.4.5/../../../libcurses.a when searching for -lcurses
/usr/bin/ld: skipping incompatible /usr/lib/libcurses.so when searching for -lcurses
/usr/bin/ld: skipping incompatible /usr/lib/libcurses.a when searching for -lcurses
/usr/bin/ld: cannot find -lcurses
collect2: ld returned 1 exit status
到目前为止我尝试过的(我在网络上其他地方找到的常用解决方案)是:
- 安装
gcc-multilib
- 安装
lib32ncurses5
和lib32ncurses6dev
- 将选项添加
-L/usr/lib32
到链接命令
可悲的是,到目前为止,这些都没有奏效。我的想法不多了。我最后的手段是使用 32 位系统,但如果可能的话,我想避免这种情况。