[错误描述] 未定义引用
提示如下:
bootable/recovery/minzip/Zip.c:1122: error: undefined reference to 'selabel_lookup'
bootable/recovery/minzip/Zip.c:1123: error: undefined reference to 'setfscreatecon'
bootable/recovery/minzip/Zip.c:1129: error: undefined reference to 'freecon'
bootable/recovery/minzip/Zip.c:1130: error: undefined reference to 'setfscreatecon'
bootable/recovery/minzip/DirUtil.c:151: error: undefined reference to 'selabel_lookup'
bootable/recovery/minzip/DirUtil.c:152: error: undefined reference to 'setfscreatecon'
bootable/recovery/minzip/DirUtil.c:158: error: undefined reference to 'freecon'
bootable/recovery/minzip/DirUtil.c:159: error: undefined reference to 'setfscreatecon'
collect2: error: ld returned 1 exit status
make: *** [out/target/product/fly/obj/SHARED_LIBRARIES/ua-server_intermediates/LINKED/ua-server.so] 错误 1
[问题分析] 根据提示可知,Zip.c 调用的四个函数 'selabel_lookup','setfscreatecon','freecon','setfscreatecon' 未定义。其实它们定义在 libselinux 库中,只是因为 libselinux 库没有被包含进相应模块的 Android.mk 文件中,才导致这样的编译错误。
[处理方法] 打开所编译模块的 Android.mk 文件,在对应模块添加LOCAL_STATIC_LIBRARIES += libselinux,如果已有其他的库,则将 libselinux 直接添加在后面即可。
小小总结,只为抛砖引玉,如果读者在编译过程中遇到类似的问题,可以举一反三,加以解决。
#欢迎技术交流# skype账号:fxwlucky