首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >使用NCurses -NDK时出现Android 6.0编译错误

使用NCurses -NDK时出现Android 6.0编译错误
EN

Stack Overflow用户
提问于 2018-07-06 15:34:40
回答 1查看 523关注 0票数 0

我尝试使用android-ndk交叉编译ncurses,但是编译错误显示这个过程进行了一半。

命令:

代码语言:javascript
复制
CC=~/my-toolchain/bin/arm-linux-androideabi-gcc ./configure --host=arm-linux-androideabi --prefix=/Android 

输出:

代码语言:javascript
复制
** Configuration summary for NCURSES 6.0 20150808:

   extended funcs: yes
   xterm terminfo: xterm-new

    bin directory: /Android/bin
    lib directory: /Android/lib
include directory: /Android/include/ncurses
    man directory: /Android/share/man
terminfo directory: /Android/share/terminfo

** Include-directory is not in a standard location  

命令

代码语言:javascript
复制
make  

输出

代码语言:javascript
复制
../objects/tic.o:tic.c:function usage: error: undefined reference to 'stderr'
../objects/tic.o:tic.c:function put_translate: error: undefined reference to 'stdout'
../objects/tic.o:tic.c:function copy_input: error: undefined reference to 'stderr'
../objects/tic.o:tic.c:function open_input: error: undefined reference to 'stdin'
../objects/tic.o:tic.c:function open_input: error: undefined reference to 'stderr'
../objects/tic.o:tic.c:function show_databases: error: undefined reference to 'stdout'
../objects/tic.o:tic.c:function show_databases: error: undefined reference to 'stderr'
../objects/dump_entry.o:dump_entry.c:function show_entry: error: undefined reference to 'stdout'
../objects/dump_entry.o:dump_entry.c:function compare_entry: error: undefined reference to 'stdout'
../lib/libncurses.a(lib_twait.o):lib_twait.c:function _nc_timed_wait: error: undefined reference to '__FD_SET_chk'
../lib/libncurses.a(lib_twait.o):lib_twait.c:function _nc_timed_wait: error: undefined reference to '__FD_SET_chk'
../lib/libncurses.a(lib_twait.o):lib_twait.c:function _nc_timed_wait: error: undefined reference to '__FD_ISSET_chk'
../lib/libncurses.a(lib_twait.o):lib_twait.c:function _nc_timed_wait: error: undefined reference to '__FD_ISSET_chk'
collect2: error: ld returned 1 exit status
Makefile:242: recipe for target 'tic' failed
make[1]: *** [tic] Error 1
make[1]: Leaving directory '/home/jrm/softether/src/curses/ncurses-6.0/progs'
Makefile:113: recipe for target 'all' failed
make: *** [all] Error 2

我对这个错误一无所知。我试着用谷歌,但我似乎找不到类似的问题。

EN

回答 1

Stack Overflow用户

发布于 2018-07-10 05:12:17

出现此错误的常见原因是,您已经针对android-23或更高版本进行了编译,但却链接到了更早的版本。这个问题的另一个变体是,当您针对不同的API级别构建多个库时。

看起来你使用的是standalone toolchain?如果这是正确的,那么我怀疑您的问题要么是libcurses中预构建库的一部分(FWIR没有任何这样的库,所以不太可能),要么是他们的构建脚本中发生了一些奇怪的事情,导致了我提到的两个问题之一。大量的项目在他们的构建脚本中添加了他们自己的Android特定的hack,这总是导致这类问题的原因,所以我一点也不会感到惊讶。

应该同时查看tic.c的编译命令和任何库/可执行文件无法链接到那里的link命令。确保两者使用相同的API级别(查找$NDK/platforms/android-$API_LEVEL-D__ANDROID_API__=$API_LEVEL-target arm-linux-androideabi$API_LEVEL之类的内容)。

顺便说一句,不是ncurses 6,但我有一个例子展示了如何使用必须构建ncurses 5.9的独立工具链:https://github.com/DanAlbert/lua-ndk/blob/master/build_lua_with_libreadline.sh#L75。也许值得一看,看看这是否有帮助。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51205243

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档