NE10仓库: git clone https://github.com/projectNe10/Ne10.git
关于编译方式,在代码的doc/building.md中有说明。
关于linux平台的交叉编译,基本不会遇到问题,在Android平台编译过程中遇到问题,花了一点时间。按照building.md中说明,过程如下,
cd $NE10_PATH
mkdir build && cd build
export ANDROID_NDK=/absolute/path/of/android-ndk
export NE10_ANDROID_TARGET_ARCH=armv7 # Can also be “aarch64”
cmake -DCMAKE_TOOLCHAIN_FILE=…/android/android_config.cmake …
make
问题主要出在Android ndk上,一开始用了android-ndk-r21e-linux-x86_64.zip版本,但是在NE10的编译脚本中使用gcc, g++等编译,在新版本的ndk中,已经没有g++,gcc的命令,用clang++, clang替换,中间也尝试修改android_config.cmake中的脚本工具,链接路径设置等,一度认为接近成功,但最终由于ld, -lc++报错放弃。
(使用21e版本的ndk,源于误解了:
ANDROID_API_LEVEL
specifies the Android API level.
- This defaults to the value 14, but must be greater than or equal to 21 for AArch64 targets.
认为也需要ndk为21以上的版本。)
最终采用android-ndk-r14b-linux-x86_64.zip的ndk成功编译android版本armv7和aarch64版本的so文件,编译方式按照文档中步骤。
在android.bp中引用:
cc_prebuilt_library_shared {
name: “libNE10”,
vendor: true,
proprietary: true,
strip: {
none: true,
},
compile_multilib: "both",
multilib: {
lib64: {
srcs: ["lib64/libNE10.so"],
},
lib32: {
srcs: ["lib/libNE10.so"],
},
},
relative_install_path: "soundfx",
}
cc_library_shared {
…
shared_libs: [
…
libNE10,
],
…
}
如果未加cc_prebuilt_library_shared定义,则报错:
Android.bp:25:1: “lib” depends on undefined module “libNE10”
关于生成so文件名,默认为libNE10.so.10,在android.bp的引用一直报错,多了.10认不到,试过软链接也没成功。
解决办法在生成so库时,删除.10后缀(直接修改so文件名是不行的)
去除VERSION配置,如下图,生成so即不带.10后缀