zoukankan      html  css  js  c++  java
  • Android C/C++ 开发

    标准的做法是 把 src 放到  /Android/develop/ 目录下去,然后建立 Android.mk 文件,

    然后 make modue ...., 但是,这种方式 太麻烦。

    下面介绍一种方法,可以比较快速的编译 C 库,

    和上一篇中一样,首先要设置自己的环境变量:

    cat setenv.sh

    export PATH=$PATH:/android/myandroid/prebuilt/linux-x86/toolchain/arm-eabi-4.2.1/bin
    export CROSS_COMPILER=arm-eabi
    export TARGET=1
    export ANDDROID=1
    export A=/android/mydroid/

    然后依然是建立一个 mk 文件:

    cat zconfiglib.mk


    ifdef ANDDROID
    Abionic=$(A)bionic/libc/
    AoutLib=$(A)out/target/product/teton_ebook/obj/lib/
    CFLAGS += -I $(A)bionic/libc/arch-arm/include -I $(A)bionic/libc/include -I $(A)bionic/libc/kernel/common -I $(A)bionic/libc/kernel/arch-arm -c -fno-exceptions -Wno-multichar -march=armv5te -mtune=xscale -msoft-float -fpic -mthumb-interwork -ffunction-sections -funwind-tables
     -fstack-protector -D__ARM_ARCH_5__ -D__ARM_ARCH_5T__ -D__ARM_ARCH_5E__ -D__ARM_ARCH_5TE__
     -include $(A)system/core/include/arch/linux-arm/AndroidConfig.h -DANDROID -fmessage-length=0 -W -Wall -Wno-unused -DSK_RELEASE -DNDEBUG
     -O2 -Wstrict-aliasing=2 -finline-functions -fno-inline-functions-called-once -fgcse-after-reload -frerun-cse-after-loop
     -frename-registers -DNDEBUG -UDEBUG -mthumb -Os -fomit-frame-pointer -fno-strict-aliasing -finline-limit=64  -MD

    LIBS += -nostdlib -Wl,-soname, -Wl,-T,$(A)build/core/armelf.xsc -Wl,--gc-sections -Wl,-Bsymbolic -L$(AoutLib) -Wl,--whole-archive   -Wl,--no-whole-archive -lc  -lm -Wl,--no-undefined   $(A)/prebuilt/linux-x86/toolchain/arm-eabi-4.4.0/bin/../lib/gcc/arm-eabi/4.4.0/interwork/libgcc.a

    然后是你自己的 lib 的 makefile.

    cat makefile


    ifdef TARGET
    include /zconfiglib.mk
    CROSS=$(CROSS_COMPILER)-
    CC=$(CROSS)gcc
    AR=$(CROSS)ar
    LD=$(CROSS)ld
    else
    CC = gcc
    AR = ar
    LD = ld
    STRIP = strip
    endif

    INCLUDE+= -I../ -I./

    LIBS+= -shared

    OBJ_DIR = obj/
    OBJECTS = $(OBJ_DIR)hello.o
    TARGET_OUTPUT=./libhello

    CFLAGS +=
    all: $(TARGET_OUTPUT) $(TEST_OUTPUT) $(OBJECTS)

    $(OBJ_DIR)%.o: %.c
            @-mkdir -p $(OBJ_DIR)
            $(CC) $(INCLUDE) $(CFLAGS) -c $< -o $@

    $(TARGET_OUTPUT): $(OBJECTS)
            $(CC) $(LIBS) -o $(TARGET_OUTPUT) $(OBJECTS) $(LD_PATH)
            @echo "make $@ finished on `date`"
    clean:
            @rm -f $(TARGET_OUTPUT)
            @rm -rf obj

    然后  make 就可以了。


    编译出来的库貌似需要放到  /system/lib 下去。

    本篇文章来源于 Linux公社网站(www.linuxidc.com)  原文链接:http://www.linuxidc.com/Linux/2010-08/27880p3.htm

  • 相关阅读:
    豆瓣评论9.5的《Effective Python》,帮你解决80%难题!
    编程科普|你知道的关于 Python 的那些知识,可能全错了!
    为什么建议使用 Linux?从“白嫖”到精通,只需要这几步!
    交易如钓鱼
    知识图谱学习一:啥是知识图谱,用来干啥,怎么做?
    openpyxl 学习笔记
    使用A卡(AMD Radeon RX470)进行机器学习的失败经历
    activemq 控制台报错 java.lang.SecurityException: User name [system] or password is invalid.
    activemq 安装配置二
    activemq 安装配置一
  • 原文地址:https://www.cnblogs.com/skyofbitbit/p/3703362.html
Copyright © 2011-2022 走看看