我正在尝试生成类似于/ 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”这一行应该帮助我静态地制作这个可执行文件。
不幸的是,它没有。
如果你知道怎么做,请告诉我。
提前致谢。
答案 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