Android編譯過程中遇到的難題及解決方案。
[錯誤描述] 未定義引用
提示如下:
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