[英]QT5 Android not Packing Versioned SharedObject
我在使用QT5和Android時遇到問題。 我正在嘗試使用libpurple的交叉構建(感謝GoogleSummerOfCode),但它沒有將其打包到apk和Java拋出中
E/AndroidRuntime( 1496): java.lang.UnsatisfiedLinkError: Cannot load library: link_image[1937]: 1725 could not load needed library 'libpurple.so.20' for 'libSimpleChat.so' (load_library[1092]: Library 'libpurple.so.20' not found)
該libpurple.so.20
是一個符號鏈接libpurple.so.20.0
,改名並不能改變什么,如果我在android復制此鏈接lib
會被忽略的文件夾(只.so
庫封裝)。 即使我將其重命名為libpurple.so
,它也不起作用,因為libpurple.so.20
似乎是用二進制形式硬編碼的。
我有類似的問題,可以通過使用非版本化的soname重新編譯共享庫來解決。
檢查共享庫的名稱:
$objdump -x libpurple.so | g 'SONAME'
您應該看到類似以下內容:
SONAME libpurple.so.20
重建庫並給出一個非版本的soname:
arm-linux-androideabi-gcc -shared -fPIC .... \
-Wl,-soname,libpurple.so -o libpurple.so
現在,共享庫應該具有一個非版本化的soname。
$objdump -x libpurple.so | g 'SONAME'
SONAME libpurple.so
當您將此共享庫與自己的庫鏈接時,它將使用非版本庫名稱。
$objdump -x libSimpleChat.so | g 'NEED'
NEEDED libpurple.so
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.