linux中android studio中构建cpp项目时出错

时间:2016-11-19 19:22:30

标签: android c++ linux android-studio android-ndk

我在我的ArchLinux中安装了android sdk,平台和构建工具以及NDK,用android-studio和c ++开发。我创建了一个简单的“你好世界程序”,但它没有编译。 android studio返回的构建错误消息是“配置项目时出现问题':app'。执行cmake /home/fabio/AndroidStudioProjects/HelloWorld/app/CMakeLists.txt的外部本机构建 < / p>

CMakeError.log

  

使用以下输出确定C编译器是否失败:   改变目录:/home/fabio/AndroidStudioProjects/HelloWorld/app/.externalNativeBuild/cmake/debug/armeabi/CMakeFiles/CMakeTmp

     

运行Build命令:“/ opt / android-sdk / cmake / 3.6.3155560 / bin / ninja”“cmTC_be251”

     

[1/2]构建C对象CMakeFiles / cmTC_be251.dir / testCCompiler.c.o   失败:/ opt / android-ndk / toolchains / llvm / prebuilt / linux-x86_64 / bin / clang -target armv5te-none-linux-androideabi -gcc-toolchain / opt / android-ndk / toolchains / arm-linux-androideabi- 4.9 / prebuilt / linux-x86_64 --sysroot = / opt / android-ndk / platforms / android-15 / arch-arm -g -DANDROID -ffunction-sections -funwind-tables -fstack-protector-strong -no-canonical-前缀-march = armv5te -mtune = xscale -msoft-float -fno-integrated-as -mthumb -Wa, - noexecstack -Wformat -Werror = format-security -g -DANDROID -ffunction-sections -funwind-tables -fstack- protector-strong -no-canonical-prefixes -march = armv5te -mtune = xscale -msoft-float -fno-integrated-as -mthumb -Wa, - noexecstack -Wformat -Werror = format-security -o CMakeFiles / cmTC_be251.dir /testCCompiler.co-c/home/fabio/AndroidStudioProjects/HelloWorld/app/.externalNativeBuild/cmake/debug/armeabi/CMakeFiles/CMakeTmp/testCCompiler.c

     

/ opt / android-ndk / toolchains / llvm / prebuilt / linux-x86_64 / bin / clang:加载共享库时出错:libtinfo.so.5:无法打开共享对象文件:没有这样的文件或目录
忍者:构建已停止:子命令失败。

为了创建项目,我刚刚选中了“包含c ++支持”选项,并以空白活动开始,之后没有更改任何代码。

修改
按照this主题中的建议尝试安装 libtinfo ,但没有效果。

1 个答案:

答案 0 :(得分:2)

我遇到了同样的问题。很多其他发行版通常都有过时的软件包。他们仍然使用ncurses 5而不是ncurses 6(libtinfo似乎属于ncurses)。假设android ndk的clang版本是在这样的系统上构建的,那么值得尝试使用ncurses 5.来自 A rch U ser R 存储库我能够安装最新版本的ncurses5-compat-libs(我还安装了32位版本:lib32-ncurses5-compat-libs)。这解决了我的问题。如果已经安装了它,请尝试重新安装或更新它(如果它已过时)。