Android.mk文件中strip语句的用法,举例该语句的用法
时间: 2024-03-14 15:45:33 浏览: 17
在 Android.mk 文件中,strip 语句可以用于去除目标文件或库文件中的符号表和调试信息,以减少文件大小。strip 语句的用法如下:
```
LOCAL_STRIP_MODULE := true
```
这里以去除.so 库文件中的符号表和调试信息为例,假设有一个名为 libtest.so 的库文件,其对应的 Android.mk 文件中可以添加以下语句:
```
include $(CLEAR_VARS)
LOCAL_MODULE := test
LOCAL_SRC_FILES := libtest.so
LOCAL_STRIP_MODULE := true
include $(PREBUILT_SHARED_LIBRARY)
```
其中,`LOCAL_STRIP_MODULE := true` 表示去除符号表和调试信息,其他语句用于指定库文件的名称和路径等信息。
需要注意的是,strip 语句只能用于.so 库文件等二进制文件,不能用于可执行文件。如果需要去除可执行文件的调试信息,可以使用类似以下命令:
```
$ arm-linux-androideabi-strip -s test
```
其中,`-s` 表示去除调试信息,`test` 为可执行文件名。
相关问题
Android.mk文件中strip语句的用法,举例
在Android.mk文件中,strip语句一般用于去除二进制文件的调试信息,以减小文件大小。strip语句的用法如下:
```
LOCAL_STRIP_MODULE := true
```
这里以去除.so库中的调试信息为例,假设有一个名为libtest.so的库文件,其对应的Android.mk文件中可以添加以下语句:
```
include $(CLEAR_VARS)
LOCAL_MODULE := test
LOCAL_SRC_FILES := libtest.so
LOCAL_STRIP_MODULE := true
include $(PREBUILT_SHARED_LIBRARY)
```
其中,`LOCAL_STRIP_MODULE := true`表示去除调试信息,其他语句用于指定库文件的名称和路径等信息。
需要注意的是,strip语句只能用于.so库等二进制文件,不能用于可执行文件。如果需要去除可执行文件的调试信息,可以使用类似以下命令:
```
$ arm-linux-androideabi-strip -s test
```
其中,`-s`表示去除调试信息,`test`为可执行文件名。
ndk开发android.mk文件编写,NDK开发之Android.mk文件编写
在进行NDK开发时,Android.mk文件是非常重要的一个文件,它用来描述你的Native代码库的模块依赖关系、编译选项等信息。下面是Android.mk文件编写的一些基本规则和示例。
1. Android.mk文件基本结构
Android.mk文件由一系列的变量定义、模块声明和编译选项等组成。下面是一个基本的Android.mk文件结构:
```
LOCAL_PATH := $(call my-dir)
include $(CLEAR_VARS)
LOCAL_MODULE := mymodule
LOCAL_SRC_FILES := mymodule.c
LOCAL_LDLIBS := -llog -landroid
include $(BUILD_SHARED_LIBRARY)
```
其中,`LOCAL_PATH`指定了当前目录路径;`CLEAR_VARS`清除之前的变量定义;`LOCAL_MODULE`指定了模块名称;`LOCAL_SRC_FILES`指定了源代码文件;`LOCAL_LDLIBS`指定了链接库;`BUILD_SHARED_LIBRARY`指定了编译成共享库。
2. 添加多个源文件
如果一个模块由多个源文件组成,可以使用`LOCAL_SRC_FILES`变量指定多个源文件,例如:
```
LOCAL_SRC_FILES := file1.c \
file2.c \
file3.c
```
3. 添加头文件路径
如果源文件中包含了其他头文件,可以使用`LOCAL_C_INCLUDES`变量指定头文件路径,例如:
```
LOCAL_C_INCLUDES := $(LOCAL_PATH)/include
```
4. 添加编译选项
如果需要添加编译选项,可以使用`LOCAL_CFLAGS`和`LOCAL_CPPFLAGS`变量,例如:
```
LOCAL_CFLAGS := -Wall -O2
LOCAL_CPPFLAGS := -std=c++11
```
5. 添加链接库
如果需要链接其他库,可以使用`LOCAL_LDLIBS`变量,例如:
```
LOCAL_LDLIBS := -llog -landroid
```
6. 添加静态库
如果需要链接静态库,可以使用`LOCAL_STATIC_LIBRARIES`变量,例如:
```
LOCAL_STATIC_LIBRARIES := libfoo libbar
```
7. 使用预编译头文件
如果需要使用预编译头文件,可以使用`LOCAL_CXX_FLAGS`变量,例如:
```
LOCAL_CXX_FLAGS += -include myheader.h
```
8. 模块依赖关系
如果一个模块依赖于另外一个模块,可以使用`LOCAL_STATIC_LIBRARIES`或`LOCAL_SHARED_LIBRARIES`变量来声明依赖关系,例如:
```
include $(CLEAR_VARS)
LOCAL_MODULE := libfoo
LOCAL_SRC_FILES := foo.c
include $(BUILD_STATIC_LIBRARY)
include $(CLEAR_VARS)
LOCAL_MODULE := libbar
LOCAL_SRC_FILES := bar.c
LOCAL_STATIC_LIBRARIES := libfoo
include $(BUILD_SHARED_LIBRARY)
```
上面的例子中,模块`libbar`依赖于模块`libfoo`。
以上就是Android.mk文件编写的一些基本规则和示例,希望能够对你有所帮助。