Android makefile生成静态可执行文件

时间:2012-07-17 01:44:27

标签: android makefile

我正在尝试生成类似于/ sbin中的adbd的可执行文件。

我希望拥有的可执行文件是带有ARM格式的iwlist,类型是静态的。

我在AndroidSourceCode / external中添加了该文件夹并执行“mm”命令进行编译

LOCAL_PATH := $(call my-dir)
ifneq ($(TARGET_SIMULATOR),true)
include $(CLEAR_VARS)

LOCAL_MODULE := libiw

LOCAL_MODULE_TAGS := eng

LOCAL_SRC_FILES := iwlib.c

LOCAL_C_INCLUDE += LOCAL_PATH

LOCAL_PRELINK_MODULE := false

include $(BUILD_SHARED_LIBRARY)

#================================================
include $(CLEAR_VARS)
LOCAL_FORCE_STATIC_EXECUTABLE := true
LOCAL_MODULE_TAGS := eng
LOCAL_SRC_FILES := iwlist.c

LOCAL_SHARED_LIBRARIES := libiw
LOCAL_MODULE := iwlist

include $(BUILD_EXECUTABLE)
#================================================

endif # !TARGET_SIMULATOR

上面的make文件实际上是通过使用

生成iwlist可执行文件来实现的
 iwlist: ELF 32-bit LSB executable, ARM, version 1 (SYSV), dynamically linked (uses
 shared libs), stripped

但是,我正在寻找“静态链接”,我正在考虑“LOCAL_FORCE_STATIC_EXECUTABLE:= true”这一行应该帮助我静态地制作这个可执行文件。

不幸的是,它没有。

如果你知道怎么做,请告诉我。

提前致谢。

1 个答案:

答案 0 :(得分:1)

我有类似的问题,但我无法使用Android工具链静态链接任何文件。 你可以使用另一个工具链。我已经尝试过linaro的工具链,它工作正常。 你可以在这里下载: https://wiki.linaro.org/WorkingGroups/ToolChain

我下载了4.7版本,解压缩到我主目录中的文件位置。 编译就像:

一样简单
~/gcc-linaro-arm-linux-gnueabihf-2012.06-20120625_linux/bin/arm-linux-gnueabihf-gcc  -static -s hello.c -o hello

我当然建议您将该bin目录放在路径中。

这将创建一个静态链接的文件:

# file hello
hello: ELF 32-bit LSB executable, ARM, version 1 (SYSV), statically linked, for GNU/Linux 2.6.31, stripped