Android生成文件以生成静态可执行文件



我正在尝试在/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"这一行应该可以帮助我静态地执行此操作。

不幸的是,事实并非如此。

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

提前谢谢。

我也有类似的问题,但我无法使用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

相关内容

最新更新