我需要分别使用ncursesw5和ncursesw6交叉编译程序。我在ncursesw6随附的Debian Buster中。所以我跑了apt install libncursesw5:i386 libncursesw5-dev:i386
。
然后我尝试运行
./configure --host=i686-linux-gnu "CFLAGS=-m32" "CXXFLAGS=-m32" "LDFLAGS=-m32 /usr/lib/i386-linux-gnu/libncursesw.so.5"
但是,当我运行ldd ./program
时,我得到了两个库。
linux-gate.so.1 (0xf7f8c000)
libncursesw.so.5 => /lib/i386-linux-gnu/libncursesw.so.5 (0xf7e91000)
libncurses.so.6 => /lib/i386-linux-gnu/libncurses.so.6 (0xf7e49000)
libtinfo.so.6 => /lib/i386-linux-gnu/libtinfo.so.6 (0xf7e20000)
libc.so.6 => /lib/i386-linux-gnu/libc.so.6 (0xf7c21000)
libdl.so.2 => /lib/i386-linux-gnu/libdl.so.2 (0xf7c1b000)
libtinfo.so.5 => /lib/i386-linux-gnu/libtinfo.so.5 (0xf7bf6000)
/lib/ld-linux.so.2 (0xf7f8e000)
这是dpkg看到的:
$ dpkg -l | grep curses
ii libncurses-dev:amd64 6.1+20181013-2+deb10u2 amd64 developer's libraries for ncurses
ii libncurses-dev:i386 6.1+20181013-2+deb10u2 i386 developer's libraries for ncurses
ii libncurses5:i386 6.1+20181013-2+deb10u2 i386 shared libraries for terminal handling (legacy version)
ii libncurses6:amd64 6.1+20181013-2+deb10u2 amd64 shared libraries for terminal handling
ii libncurses6:i386 6.1+20181013-2+deb10u2 i386 shared libraries for terminal handling
ii libncursesw5:i386 6.1+20181013-2+deb10u2 i386 shared libraries for terminal handling (wide character legacy version)
ii libncursesw5-dev:amd64 6.1+20181013-2+deb10u2 amd64 transitional package for libncurses-dev
ii libncursesw5-dev:i386 6.1+20181013-2+deb10u2 i386 transitional package for libncurses-dev
ii libncursesw6:amd64 6.1+20181013-2+deb10u2 amd64 shared libraries for terminal handling (wide character support)
ii libncursesw6:i386 6.1+20181013-2+deb10u2 i386 shared libraries for terminal handling (wide character support)
ii ncurses-base 6.1+20181013-2+deb10u2 all basic terminal type definitions
ii ncurses-bin 6.1+20181013-2+deb10u2 amd64 terminal-related programs and man pages
ii ncurses-term 6.1+20181013-2+deb10u2 all additional terminal type definitions
我只能找到一组包括:
$ ls /usr/include/ncurses
ncurses_dll.h ncurses.h ncursesw/
任何线索?谢谢
运行./configure --help
,因为可能会有覆盖库版本的选项。
如果没有任何效果,请查看Makefile.in,该文件将通过configure处理为Makefile。寻找与ncurses相关的任何内容。我敢打赌,有一些像NCURSESLIB这样的变量,您可以在执行configure时在命令行上进行修改,就像使用CFLAGS(即./configure NCURSESLIB=-lncursesw.so.5
)一样。
您也可以直接编辑最终的Makefile。如果在文件中搜索ncursesw
,则应该在某处找到-lncursesw
之类的内容。可能会有一些变量替换使它模糊(即-l$(NCURSES)
或NCURSESLIB=-lncursesw
),但是它将存在于某处。您将需要对其进行更改,以便最终获得-lncursesw.so.5
。
[此外,当进行交叉编译时,通常应指定--build
参数以及--host
。 --build
的值将设置为进行编译的工作站的体系结构。我认为这与您的问题无关。