Cocos2d-x v3.12 编译失败
Cocos2d-x v3.12 compile fails
最近更新 Cocos2d-x 到 v 3.12 并创建了 "Hello World!" 项目但 CLI 命令失败,日志如下所示:
make: Entering directory `/home/..../proj.android'
[armeabi] StaticLibrary : libcocos2d.a
[armeabi] Compile++ thumb: cocostudio_static <= WidgetReader.cpp
/home/<user>/AndroidTools/crystax-ndk-10.3.1/toolchains/llvm-3.7/prebuilt/linux-x86_64/bin/clang++: error while loading shared libraries: libncurses.so.5: cannot open shared object file: No such file or directory
make: *** [obj/local/armeabi/objs/cocostudio_static/WidgetReader/WidgetReader.o] Error 127
make: *** Waiting for unfinished jobs....
make: Leaving directory `/home/...../proj.android'
Error running command, return code: 2.
该路径确实包含提到的 Clang++ file/toolchain,我应该安装任何其他依赖项吗? 运行软呢帽 24.
编辑:
尝试使用 Cocos 推荐的 android NDK v11 进行编译,我得到了一个不同的错误
make: Entering directory '/home/.....<projectDir>...../proj.android'
Android NDK: WARNING: APP_PLATFORM android-23 is larger than android:minSdkVersion 9 in ./AndroidManifest.xml
[armeabi] Compile++ thumb: MyGame_shared <= main.cpp
[armeabi] Compile++ thumb: MyGame_shared <= AppDelegate.cpp
[armeabi] Compile++ thumb: MyGame_shared <= HelloWorldScene.cpp
/home/<user>/AndroidTools/android-sdk-linux/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/bin/clang++: error while loading shared libraries: libncurses.so.5: cannot open shared object file: No such file or directory
/home/<user>/AndroidTools/android-sdk-linux/ndk-bundle/build/core/build-binary.mk:462: recipe for target 'obj/local/armeabi/objs-debug/MyGame_shared/__/__/Classes/AppDelegate.o' failed
make: *** [obj/local/armeabi/objs-debug/MyGame_shared/__/__/Classes/AppDelegate.o] Error 127
make: *** Waiting for unfinished jobs....
/home/<user>/AndroidTools/android-sdk-linux/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/bin/clang++: error while loading shared libraries: libncurses.so.5: cannot open shared object file: No such file or directory
/home/<user>/AndroidTools/android-sdk-linux/ndk-bundle/build/core/build-binary.mk:462: recipe for target 'obj/local/armeabi/objs-debug/MyGame_shared/hellocpp/main.o' failed
make: *** [obj/local/armeabi/objs-debug/MyGame_shared/hellocpp/main.o] Error 127
/home/<user>/AndroidTools/android-sdk-linux/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/bin/clang++: error while loading shared libraries: libncurses.so.5: cannot open shared object file: No such file or directory
/home/<user>/AndroidTools/android-sdk-linux/ndk-bundle/build/core/build-binary.mk:462: recipe for target 'obj/local/armeabi/objs-debug/MyGame_shared/__/__/Classes/HelloWorldScene.o' failed
make: *** [obj/local/armeabi/objs-debug/MyGame_shared/__/__/Classes/HelloWorldScene.o] Error 127
make: Leaving directory '/home/.....<projectDir>...../proj.android'
Error running command, return code: 2.
而且我觉得可能是以下原因造成的问题
error while loading shared libraries: libncurses.so.5: cannot open shared object file: No such file or directory
但是我已经安装了所有必要的库和文件,我想,我应该交叉检查任何特定的库还是可以通过任何其他方式修复?
通过安装缺少的 ncurse 库修复了它。默认情况下命令
dnf install ncurses
returns 无需安装,因为 dnf 软件包包含已安装的必要库,但事实证明它并未安装所有 ncurses 库,您将拥有还要安装以下库以继续构建。
- ncurses-compat-libs
- ncurses-static
- ncurses-term
此后构建继续成功。
最近更新 Cocos2d-x 到 v 3.12 并创建了 "Hello World!" 项目但 CLI 命令失败,日志如下所示:
make: Entering directory `/home/..../proj.android'
[armeabi] StaticLibrary : libcocos2d.a
[armeabi] Compile++ thumb: cocostudio_static <= WidgetReader.cpp
/home/<user>/AndroidTools/crystax-ndk-10.3.1/toolchains/llvm-3.7/prebuilt/linux-x86_64/bin/clang++: error while loading shared libraries: libncurses.so.5: cannot open shared object file: No such file or directory
make: *** [obj/local/armeabi/objs/cocostudio_static/WidgetReader/WidgetReader.o] Error 127
make: *** Waiting for unfinished jobs....
make: Leaving directory `/home/...../proj.android'
Error running command, return code: 2.
该路径确实包含提到的 Clang++ file/toolchain,我应该安装任何其他依赖项吗? 运行软呢帽 24.
编辑:
尝试使用 Cocos 推荐的 android NDK v11 进行编译,我得到了一个不同的错误
make: Entering directory '/home/.....<projectDir>...../proj.android'
Android NDK: WARNING: APP_PLATFORM android-23 is larger than android:minSdkVersion 9 in ./AndroidManifest.xml
[armeabi] Compile++ thumb: MyGame_shared <= main.cpp
[armeabi] Compile++ thumb: MyGame_shared <= AppDelegate.cpp
[armeabi] Compile++ thumb: MyGame_shared <= HelloWorldScene.cpp
/home/<user>/AndroidTools/android-sdk-linux/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/bin/clang++: error while loading shared libraries: libncurses.so.5: cannot open shared object file: No such file or directory
/home/<user>/AndroidTools/android-sdk-linux/ndk-bundle/build/core/build-binary.mk:462: recipe for target 'obj/local/armeabi/objs-debug/MyGame_shared/__/__/Classes/AppDelegate.o' failed
make: *** [obj/local/armeabi/objs-debug/MyGame_shared/__/__/Classes/AppDelegate.o] Error 127
make: *** Waiting for unfinished jobs....
/home/<user>/AndroidTools/android-sdk-linux/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/bin/clang++: error while loading shared libraries: libncurses.so.5: cannot open shared object file: No such file or directory
/home/<user>/AndroidTools/android-sdk-linux/ndk-bundle/build/core/build-binary.mk:462: recipe for target 'obj/local/armeabi/objs-debug/MyGame_shared/hellocpp/main.o' failed
make: *** [obj/local/armeabi/objs-debug/MyGame_shared/hellocpp/main.o] Error 127
/home/<user>/AndroidTools/android-sdk-linux/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/bin/clang++: error while loading shared libraries: libncurses.so.5: cannot open shared object file: No such file or directory
/home/<user>/AndroidTools/android-sdk-linux/ndk-bundle/build/core/build-binary.mk:462: recipe for target 'obj/local/armeabi/objs-debug/MyGame_shared/__/__/Classes/HelloWorldScene.o' failed
make: *** [obj/local/armeabi/objs-debug/MyGame_shared/__/__/Classes/HelloWorldScene.o] Error 127
make: Leaving directory '/home/.....<projectDir>...../proj.android'
Error running command, return code: 2.
而且我觉得可能是以下原因造成的问题
error while loading shared libraries: libncurses.so.5: cannot open shared object file: No such file or directory
但是我已经安装了所有必要的库和文件,我想,我应该交叉检查任何特定的库还是可以通过任何其他方式修复?
通过安装缺少的 ncurse 库修复了它。默认情况下命令
dnf install ncurses
returns 无需安装,因为 dnf 软件包包含已安装的必要库,但事实证明它并未安装所有 ncurses 库,您将拥有还要安装以下库以继续构建。
- ncurses-compat-libs
- ncurses-static
- ncurses-term
此后构建继续成功。