0

我需要分别使用 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/

有什么线索吗?谢谢

4

1 回答 1

1

运行./configure --help,因为可能有覆盖库版本的选项。

如果这没有产生任何结果,请查看 Makefile.in,它通过 configure 处理为 Makefile。查找与 ncurses 相关的任何内容。我敢打赌,当您执行配置时,您可以在命令行上修改诸如 NCURSESLIB 之类的变量,就像您对 CFLAGS 所做的那样(即。./configure NCURSESLIB=-lncursesw.so.5)。

您也可以直接编辑最终的 Makefile。如果您搜索文件,您应该会在某处ncursesw找到类似的东西。-lncursesw可能有一些变量替换掩盖了它(即。-l$(NCURSES)NCURSESLIB=-lncursesw),但它会在某个地方。你会想要改变它,以便最终得到-lncursesw.so.5.

此外,在交叉编译时,通常应该指定--build参数以及--host. 的值--build将设置为进行编译的工作站的体系结构。不过,我认为这与您的问题无关。

于 2020-05-15T22:40:36.170 回答