簡體   English   中英

QT5 Android不打包版本化SharedObject

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM