HarmonyOS 使用gn编译Skia编译出的so

使用gn自定义template("gcc_toolchain") && template("ohos_clang_toolchain") 编译出来的so库

readelf -d libskia.so 
 
Dynamic section at offset 0x6d0030 contains 18 entries: 
  Tag        Type                         Name/Value 
0x0000000000000001 (NEEDED)             Shared library: [libEGL.so] 
0x0000000000000001 (NEEDED)             Shared library: [libGLESv3.so] 
0x000000000000000e (SONAME)             Library soname: [libskia.so] 
0x0000000000000007 (RELA)               0x39a78

使用HarmonyOS cmake readelf -d libsum.so

Dynamic section at offset 0x818 contains 25 entries: 
  Tag        Type                         Name/Value 
0x0000000000000001 (NEEDED)             Shared library: [libc++_shared.so] 
0x0000000000000001 (NEEDED)             Shared library: [libc.so] 
0x000000000000001e (FLAGS)              BIND_NOW 
0x000000006ffffffb (FLAGS_1)            Flags: NOW

没有libc.so BIND_NOW 还有跟xxx相比 没有libm.so libc.so libdl.so

Dynamic section at offset 0x816c08 contains 31 entries: 
  Tag        Type                         Name/Value 
0x0000000000000001 (NEEDED)             Shared library: [libdl.so] 
0x0000000000000001 (NEEDED)             Shared library: [libEGL.so] 
0x0000000000000001 (NEEDED)             Shared library: [libGLESv2.so] 
0x0000000000000001 (NEEDED)             Shared library: [liblog.so] 
0x0000000000000001 (NEEDED)             Shared library: [libm.so] 
0x0000000000000001 (NEEDED)             Shared library: [libc.so] 
0x000000000000000e (SONAME)             Library soname: [libwmskia.so] 
0x000000000000001e (FLAGS)              BIND_NOW 
0x000000006ffffffb (FLAGS_1)            Flags: NOW
HarmonyOS
2024-08-23 12:00:57
浏览
收藏 0
回答 1
待解决
回答 1
按赞同
/
按时间
zxjiu

readelf -d libskia.so指令结果为:

0x0000000000000001 (NEEDED) Shared library: [libEGL.so] 
0x0000000000000001 (NEEDED) Shared library: [libGLESv3.so] 
0x000000000000000e (SONAME) Library soname: [libskia.so] 
0x0000000000000007 (RELA) 0x39a78

表示的意思是:使用libskia.so库,会存在依赖libEGL.so等等库,也就是说,调用libskia.so库的函数接口,存在通过该库去调用libEGL.so里面的函数接口,在程序执行过程中,CMakeLists.txt文件中,增加libskia.so库链接时,也要将对应的依赖库加上,类似如下依赖关系:

target_link_libraries(entry PUBLIC libace_napi.z.so libhilog_ndk.z.so libskia.so libEGL.so)

没有libc.so BIND_NOW 没有libm.so libc.so libdl.so,这表明,应用程序运行时,调用的库之间,不存在依赖这些库的逻辑关系,所以用readelf -d指令查询不到。

分享
微博
QQ
微信
回复
2024-08-23 15:11:07
相关问题
ArkTS中如何使用编译出Native so
468浏览 • 1回复 待解决
编译skia库如何修改字体
1136浏览 • 1回复 待解决
如何编译鸿蒙使用libcurl.so
962浏览 • 1回复 待解决
MQTT为什么编译出错啊?
2749浏览 • 1回复 待解决
如何引用其他工程编译so
408浏览 • 0回复 待解决
编译出现问题,请问怎么解决?
395浏览 • 1回复 待解决
小熊派智慧物流案例编译出
5668浏览 • 1回复 待解决
HarmonyOS 依赖自己编译so,找不到
7浏览 • 1回复 待解决
如何减小编译产物so大小
475浏览 • 1回复 待解决
CJSON编译出库链接运行后崩溃
227浏览 • 1回复 待解决
支持调试本地源码无法编译so
721浏览 • 1回复 待解决
Hi3861 SDK编译出现问题
12177浏览 • 3回复 待解决