libtest (native:platform) should not link to libmi3 (native:vendor)

在Android 9.0系统中,由于改动导致vendor/lib和system/lib之间无法直接互相链接。博主在编译自定义库时遇到libmi3库无法链接的问题,尝试修改`build/make/core/link_type.mk`和`system/core/rootdir/etc/ld.config.txt`未果。最终通过修改libmi3库的link_type为native:platform使得编译成功,但运行时需将vendor/lib下的库拷贝到system/lib并授权。此方法仅适用于临时编译,系统编译时仍会遇到相同问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

在安卓9.0上写了库,其中引用到系统system/lib 和vendor/lib中的库。编译时发现出现错误

error: libtest (native:platform) should not link to libmi3 (native:vendor)

提示libmi3库无法链接,因为我写的库是编译到system/lib .但是libmi3库是在vendor/lib之下

而9.0 修改直接vendor/lib 和systen/lib之间无法互相读取造成,

查阅网上资料有的说修改

build/make/core/link_type.mk

my_allowed_types :=native:vendor

my_link_type :=native:vendor

试了一些不知道是方法不对还是怎么的好像没用。还有说修改

system/core/rootdir/etc/ld.config.txt

namespace.default.search.paths += /system/${LIB}

看这挺像的,但是也还是不行,后面直接修改报错那个库文件编译出来的link_type

\out\target\product\test\obj\SHARED_LIBRARIES\libmi3_intermediates\link_type

修改文件中的native:vendor
改为我们所需要的native:platform

这样我的SO库就可以正常编译成功,但是如果需要在机器上运行,需要将vendor/lib下对应的库文件拷贝到system/lib下,并且给予权限

但是这样改有个问题就是系统编译的时候有其他vendor库链接的这个库文件的时候会报同样的错,所以编完了需要改回去,这种方法只能供

暂时编译我们自己需要的SO库使用

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值