`
地球小野花
  • 浏览: 163119 次
  • 性别: Icon_minigender_1
  • 来自: 马赛大回旋
社区版块
存档分类
最新评论

关于Android的prelink(Linux)

阅读更多
Android 添加库文件

(转:原文链接:http://blog.csdn.net/ccskyer/archive/2010/06/18/5677553.aspx)
在Android中添加自己的库文件,在编译时会提示:library 'XXX.so' not in prelink map 错误,

其中一个很重要的文件在build/core/prelink-linux-arm.map,但不是很了解,下面是转别人的文章,自己慢慢吸收:

变量设置为false那么将不做prelink操作
LOCAL_PRELINK_MODULE := false(可以直接在Android.mk中设置)
默认是需要prlink 的,同时需要在 build/core/prelink-linux-arm.map 中加入
libhellod.so 0x96000000(注意地址修改,避免ram的冲突)
这 个map文件好像是制定动态库的地址的,在前面注释上面有一些地址范围的信息,注意库与库之间的间隔数,
如果指定不好的话编译的时候会提示说地址 空间冲突的问题。另外,注意排序,这里要把数大的放到前面去,
按照大小降序排序。
解析 LOCAL_PRELINK_MODULE 变量
build/core/dynamic_binary.mk:94:ifeq ($(LOCAL_PRELINK_MODULE),true)
ifeq ($(LOCAL_PRELINK_MODULE),true)
$(prelink_output): $(prelink_input) $(TARGET_PRELINKER_MAP) $(APRIORI)
$(transform-to-prelinked)
transform-to-prelinked定义:
./build/core/definitions.mk:1002:define transform-to-prelinked
define transform-to-prelinked
@mkdir -p $(dir $@)
@echo "target Prelink: $(PRIVATE_MODULE) ($@)"
$(hide) $(APRIORI) \
--prelinkmap $(TARGET_PRELINKER_MAP) \
--locals-only \
--quiet \
$/build/tools/apriori”
参 考文档:
动态库优化——Prelink(预连接)技术
http://www.eefocus.com/article/09-04/71629s.html

————————————————————————————————————
动态库需要指定Map 信息,需要修改build/core/prelink-linux-arm.map 中 的信息。这个map 文件好像是制定动态库的地址的,在前面注释上面有一些地址范围的信息,注意库 与库之间的间隔数,如果指定不好的话编译的时候会提示说地址空间冲突的问题。另外,注意排序,这里要把数大的放到前面去,按照大小降序排序。

note:

注意地址的修改。
分享到:
评论

相关推荐

    Prelink--一种Linux下加速程序启动的技术研究.pdf

    Prelink是一种针对Linux系统的优化技术,旨在加速程序启动和系统加载。它的工作原理主要涉及到以下几个核心方面: 1. **缓存符号解析结果**:在程序运行之前,Prelink预先进行符号解析,将程序中未定义的函数名转换...

    前端开源库-prelink

    "prelink" 是一个前端开源库,它专注于解决这个问题,特别是在处理模块依赖时提供了一种高效的方法。通过预链接(prelinking)和符号链接(symbolic linking),prelink使得项目能够更干净、更独立地管理其源代码。 ...

    android中移植 c c++程序

    Android 中移植 C/C++ 程序是一项复杂的任务,需要了解 Android 的编译环境和 Linux 内核中的移植机制。在 Android 中,C/C++ 程序需要编译成静态库或动态链接库,以便在 Android 设备上运行。 首先,Android 并...

    android Framework层的修改规则

    target Prelink: libandroid_runtime (out/target/product/generic/symbols/system/lib/libandroid_runtime.so) target Strip: libandroid_runtime (out/target/product/generic/obj/lib/libandroid_runtime.so) ...

    prelink:用于与 PreLink 实验室信息系统交互的 SOAP Web 服务客户端

    用于与 PreLink 实验室信息系统交互的 SOAP Web 服务客户端 配置 在 config/ 下创建一个 prelink.yml 文件,其中包含以下详细信息: wsdl_url - The URL for the WSDL of the PreLink Server station_id - Your ...

    Android NDK环境配置

    LOCAL_PRELINK_MODULE := false LOCAL_MODULE := my_jni LOCAL_SRC_FILES := client_agent.cpp \ client_makehole.cpp LOCAL_LDLIBS += -L$(SYSROOT)/usr/lib -llog include $(BUILD_SHARED_LIBRARY) ``` - `...

    【优亿Android特刊】第二十二期:Android源码修改

    - **Android Prelink实现**:理解如何优化启动时间和内存占用。 - **Widget源码**:研究新增Widget的功能实现。 **2. Android IPC通讯机制源码分析** Android IPC(进程间通信)主要依赖于Binder机制。Binder通过...

    Android的底层库

    TARGET_PRELINK_MODULE := false include $(BUILD_SHARED_LIBRARY) ``` #### 四、编译与安装路径 - **编译模板的区别**:根据目标平台的不同,可以选择使用不同的编译模板。例如,对于Android平台的目标编译,...

    prelink-0.5.0-9.el7.x86_64.rpm

    官方离线安装包,亲测可用。使用rpm -ivh [rpm完整包名] 进行安装

    android的MK文件编写规范

    `LOCAL_C_INCLUDES`添加了额外的头文件搜索路径,而`LOCAL_CFLAGS`设置了编译选项,如`-MD`用于生成依赖文件,`-FF`、`-Uarm`、`-DMODULE`、`-D__LINUX_ARM_ARCH__=7`是特定的编译标志。`LOCAL_MODULE`定义了生成的...

    Android_JNI实例(android_学习资料_集成测试_及实例程序源代码_,JNI实例程序_)

    LOCAL_PRELINK_MODULE := false LOCAL_MODULE := libhello include $(BUILD_SHARED_LIBRARY) ``` 在这个例子中,`LOCAL_SRC_FILES`指定源文件,`LOCAL_C_INCLUDES`包含需要的头文件路径,`LOCAL_SHARED_LIBRARIES`...

    openssl-1.0.2o_android_arm64_jnilib

    LOCAL_PRELINK_MODULE := false LOCAL_CPPFLAGS := \ -DWITH_DOM -DWITH_OPENSSL \ -D__ANDROID__ \ -DNULL=0 -DSOCKLEN_T=socklen_t -DNO_SSTREAM -DBSD=1 -DNO_SSTREAM -fexceptions -DANDROID -DXLOCALE_NOT_...

    Unicore32架构下的Android系统链接加载优化.pdf

    《Unicore32架构下的Android系统链接加载优化》这篇文献主要探讨了在Unicore32处理器架构下,如何优化Android系统的链接加载过程,从而提高系统启动速度和整体性能。作者曹越从Android的链接加载系统入手,深入剖析...

    【Android系统原理与开发要点详解】04_Android的底层库和程序

    TARGET_PRELINK_MODULE := false include $(BUILD_SHARED_LIBRARY) ``` 编译后的可执行程序、动态库和静态库会被放置在特定的文件夹中: - 可执行程序:`out/target/product/generic/obj/EXECUTABLE` - 动态...

    04_Android的底层库和程序-Android课件

    TARGET_PRELINK_MODULE := false include $(BUILD_SHARED_LIBRARY) ``` 编译后的输出文件会放置在不同的目录下,具体如下: - 可执行文件:`out/target/product/generic/obj/EXECUTABLE` - 静态库:`out/target/...

    Android_JNI_实例.doc

    LOCAL_PRELINK_MODULE := false LOCAL_MODULE := libhello LOCAL_CFLAGS += -DHAVE_LOG include $(BUILD_SHARED_LIBRARY) ``` 5. 在 Android 应用的主活动中调用 `TestHelloLib` 类的 `printHello()` 方法。例如...

    boa移植到android平台

    LOCAL_PRELINK_MODULE := false LOCAL_SRC_FILES := src/lex.yy.c \ src/y.tab.c \ src/alias.c \ src/boa.c \ src/buffer.c \ src/cgi.c \ src/cgi_header.c \ src/config.c \ src/escape.c \ src/get.c...

    android笔记.rar

    android笔记.doc ...4.10 Prelink实现的源码分析 ... ...142 4.11 适配硬件平台... .145 4.12 其他介绍... ...147 4.12.1 手机保护Keyguard ... .147 4.12.2 空中升级Fota... .148 4.12.3 Flash分区 ... .149

Global site tag (gtag.js) - Google Analytics