我目前正在尝试编译和链接我的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
添加到链接命令答案 0 :(得分:2)
有两个问题:
gcc -m32 $^ -o $@ -lcurses
-lncurses
。答案 1 :(得分:0)
该消息显示gcc没有找到32位的ncurse库。
快速解决方案:查看我的机器(ubuntu 11.10),我认为应该是
gcc -m32 -lncurses $^ -o $@ -v
库实际上位于/lib32/libncurses.so.5.9。
一般来说,如果遇到问题,请尝试。
gcc -m32 -lcurses $^ -o $@ -v
它会打印出很多东西。
查找看起来像-L的参数,并尝试在目录中找到库文件(libfoo.so或libfoo.a)。
答案 2 :(得分:0)
您可能需要lib32ncurses5-dev
包或类似的东西,为ncurses提供32位变体开发包。