Android 编译静态链接的可执行文件

本文介绍了在Android开发中编译静态链接可执行文件的必要性和场景,如init进程和Recovery模式。通过设置LOCAL_FORCE_STATIC_EXECUTABLE为true和指定LOCAL_STATIC_LIBRARIES,可以实现静态链接。编译模板参考bootable/recovery/Android.mk。file指令可用于检查程序是否静态链接。

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

Android 编译静态链接的可执行文件

在Android 开发与调试过程中往往遇到以下两种场景,导致我们编译的可执行程序无法运行:

  • 不支持动态链接,比如系统初始化进程init和Recovery模式下执行的recovery,它们在执行的时候,往往不会挂载/system分区,不存在ld和ldd.so等动态加载工具和C库,这样的可执行程序往往需要静态链接。
  • 一些辅助测试的工具程序。比如busybox等,如果是动态链接的话,依赖的库的接口如有变化,往往会导致程序无法执行。一般都是静态链接,一次编译后,可以随时执行。

    那么在Android 中如何编译一个静态链接的可执行程序呢?
    其实非常简单,我们仿照源码中的bootable/recovery/Android.mk,简化出如下的编译模板:

LOCAL_PATH := $(call my-dir)
#复位编译参数
include $(CLEAR_VARS)
#指定模块名
LOCAL_MODULE := module_name
#标志该模块需要强制静态链接
LOCAL_FORCE_STATIC_EXECUTABLE := true
#指定额外的编译、链接参数
LOCAL_CFLAGS += 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值