我目前正在嘗試編譯和鏈接Debian 64位上的32位應用程序,但它在鏈接時失敗。編譯和鏈接Debian 64位上的32位應用程序
我使用(在我的Makefile)編譯的命令是:
gcc -Os -m32 -Wall -g -c $< -o [email protected]
這似乎是工作。
然後我用下面的命令鏈接:
gcc -m32 -lcurses $^ -o [email protected]
這種失敗,並給出以下錯誤:
/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
我到目前爲止已經試過(通常的解決方案,我發現其他地方的web)是:
- 安裝
gcc-multilib
- 安裝
lib32ncurses5
和lib32ncurses6dev
- 添加選項
-L/usr/lib32
到鏈接命令
可悲的是,這些都不至今工作。 我正在用盡想法。我最後的手段是使用32位系統,但如果可能的話,我想避免這種情況。
謝謝你的回答,它有效! 第一點並沒有改變我的情況,但感謝信息,我不知道這一點。 第二點解決了我的問題,非常驚人。你怎麼知道我想鏈接ncurses而不是詛咒?我自己並不知道...(我不確定兩者之間的區別,除非ncurses被認爲是更新的...?) – Ranzal
「你是怎麼知道我想鏈接ncurses而不是詛咒的? 「你已經安裝了'lib32ncurses6dev'包;-) –
的確,但主要是因爲它是唯一一個看起來接近我所需要的包。我有32位和64位的curses和ncurses,所以我真的不明白爲什麼它使用curses和ncurses的64位工作,但只有32位的ncurses。無論如何,它的工作原理是我需要的!謝謝 ;) – Ranzal