android模拟器上调试带共享库(*.so)的程序

本文介绍了如何在Android模拟器上调试依赖特定共享库的应用程序。通过修改环境变量LD_LIBRARY_PATH,作者成功地解决了模拟器无法加载外部共享库的问题,实现了程序在/data/local目录下的顺利运行。

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

       这里说的程序是指在ndk下编译出来的可执行程序,因为公司的usb接口被封死了,所以想用模拟器直接调试。但是要调试的程序依赖一个共享库,在真机上可以直接将共享库拷贝到/system/lib目录下,就可以运行了。

但模拟器上却不行,拷贝东西到系统区时会报错(Cannot allocate memory),让人十分郁闷。

后来发现/init.rc里面开始几句是这样的:

# setup the global environment
    export PATH /sbin:/system/sbin:/system/bin:/system/xbin
    export LD_LIBRARY_PATH /system/lib
    export ANDROID_BOOTLOGO 1
    export ANDROID_ROOT /system
    export ANDROID_ASSETS /system/app
    export ANDROID_DATA /data
    export EXTERNAL_STORAGE /mnt/sdcard
    export ASEC_MOUNTPOINT /mnt/asec
    export BOOTCLASSPATH /system/framework/core.jar:/system/framework/ext.jar:/system/framework/framework.jar:/system/framework/android.policy.jar:/system/framework/services.jar


于是将共享库和程序拷贝到/data/local,并尝试添加lib的环境路径:

E:\android\tools>adb shell
# export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/data/local
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/data/local
# cd /data/local
cd /data/local
# ls
ls

busybox
libhello-jni.so
tmp
ttest

#./ttest

./ttest

hello world!


运行成功。


这样到是可以调试了,但如果可以拷贝到系统分区/system中就更好了,不知道怎样才可以?



评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值