Android 9(Pie)BSP编译缺失依赖问题解决咨询
解决Android Pie BSP编译中libEGL-fb等库依赖缺失问题
核心问题分析
编译系统找不到你放在vendor/lib下的库,本质是路径不符合Android Pie的架构细分要求,或者编译系统未识别到这些预编译库的存在。
具体解决方案
匹配库的架构
报错明确指向android-arm(32位ARM架构),要确认放入的.so库是armeabi-v7a架构的。用file libEGL-fb.so命令检查,输出里应包含ARM, EABI5 version 1这类标识,别误放64位arm64-v8a的库。修正库的放置路径
Android Pie的vendor目录要求按架构细分,不能直接丢到vendor/lib:- 32位ARM编译:放到
vendor/lib/armeabi-v7a - 64位ARM编译:放到
vendor/lib64/arm64-v8a
如果是厂商定制BSP,更规范的路径是vendor/<你的厂商名>/<设备型号>/lib/armeabi-v7a,编译系统会自动扫描该路径下的库。
- 32位ARM编译:放到
让编译系统识别预编译库
手动放置库后,需要明确告知编译系统这些库的存在:- 在设备的
BoardConfig.mk中添加预编译库声明:TARGET_PREBUILT_LIBS += \ vendor/lib/armeabi-v7a/libEGL-fb.so \ vendor/lib/armeabi-v7a/libGAL-fb.so \ vendor/lib/armeabi-v7a/libGLESv2-fb.so - 或者在
simpletriangle_vivante-fb的Android.mk中补充库路径:LOCAL_SHARED_LIBRARIES += \ libEGL-fb \ libGAL-fb \ libGLESv2-fb LOCAL_LDFLAGS += -L$(LOCAL_PATH)/../../../../vendor/lib/armeabi-v7a
- 在设备的
后续运行时排查(若编译通过但运行报错)
要是编译通过后设备上加载库失败,需检查SELinux规则,在设备的sepolicy目录下添加权限:allow domain vendor_lib_file:file rx_file_perms;
原报错信息
frameworks/base/cmds/simpletriangle_vivante-fb/Android.mk: error: simpletriangle_vivante-fb (EXECUTABLES android-arm) missing libEGL-fb (SHARED_LIBRARIES android-arm) You can set ALLOW_MISSING_DEPENDENCIES=true in your environment if this is intentional, but that may defer real problems until later in the build. frameworks/base/cmds/simpletriangle_vivante-fb/Android.mk: error: simpletriangle_vivante-fb (EXECUTABLES android-arm) missing libGAL-fb (SHARED_LIBRARIES android-arm) You can set ALLOW_MISSING_DEPENDENCIES=true in your environment if this is intentional, but that may defer real problems until later in the build. frameworks/base/cmds/simpletriangle_vivante-fb/Android.mk: error: simpletriangle_vivante-fb (EXECUTABLES android-arm) missing libGLESv2-fb (SHARED_LIBRARIES android-arm) You can set ALLOW_MISSING_DEPENDENCIES=true in your environment if this is intentional, but that may defer real problems until later in the build.
内容的提问来源于stack exchange,提问作者Karthik
相关产品推荐
相关产品推荐

