android NDK 编译gdb

##ndk 编译gdb

  1. 生成工具链:
    $NDK/build/tools/make-standalone-toolchain.sh --platform=android-23 --arch=arm64 --install-dir=$NDK/out/toolchain
  2. 设置一个env.sh 用的时候source
    export PATH=$NDK/out/toolchain/bin:$PATH
    export CC=“aarch64-linux-android-gcc -pie -fPIE --sysroot=$NDK/out/toolchain/sysroot”
    export CXX=“aarch64-linux-android-g++ -pie -fPIE
    –sysroot=$NDK/out/toolchain/sysroot”
    export CXXFLAGS="-lstdc++"
  3. 配置gdb
    mkdir out
    ./configure --host=aarch64-linux-android --target=aarch64-linux-android --prefix=$PWD/out
    make
    make install

出错处理:
1.类型冲突 Elf32_auxv_t Elf64_auxv_t
linux-low.c:116:3: error: typedef redefinition with different types (‘struct Elf32_auxv_t’ vs ‘struct Elf32_auxv_t’)
linux-low.c:131:3: error: typedef redefinition with different types (‘struct Elf64_auxv_t’ vs ‘struct Elf64_auxv_t’)
这个在ndk的elf.h 中已经有定义,直接注释掉gdb/gdbserver/linux-low.c 中的定义
2. setpwent 没定义
complete.c:2060: error: undefined reference to ‘setpwent’
readline/complete.c 中假如宏判断包含
#if defined(HAVE_GETPWENT)
setpwent ();
#endif
3. 运行的时候提示缺库 libc++_shared.so
在ndk 目录下find . -name libc++_shared.so
在这里插入图片描述
arm arm64 找对应的push 到板子上/system/lib
4. 运行段错误
手动加打印 发现在signals-state-save-restore.c --> save_original_signals_state 挂掉
在这里插入图片描述
直接注释掉internal_error

  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值