Android 编译 C 库 .
来源:互联网 发布:淘宝口红正品店铺 编辑:程序博客网 时间:2024/06/04 22:57
标准的做法是 把 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 下去。
- Android 编译 C 库
- Android 编译 C 库 .
- android NDK 交叉编译C库
- android 编译c
- android ndk c编译
- 在Android下编译c
- android交叉编译c程序
- android交叉编译c程序
- android 编译调用C代码
- android eclipse编译c文件
- android 编译C生成so动态链接库
- linux C库编译
- c 编译动态库
- Android项目中编译 C的模块
- Android编译Native C的helloworld模块
- Android编译Native C的helloworld模块
- Android编译Native C的helloworld模块
- Android 非NDK方式编译C文件
- android录音和得到音量
- linux raid1搭建教程
- mybatis-spring集成:配置多数据库源中遇到的问题--MapperScannerConfigurer配置
- Sqlite3的使用小结(不定期更新)
- HashMap和Hashtable及HashSet的区别
- Android 编译 C 库 .
- Hardkernel推尺寸最小功能强悍的四核ARM PC
- 如何修改lListPreference弹出的dialog的样式
- Google Analytics追踪不同渠道的广告流量
- 使用Socket判断端口是否被占用
- Android 上,用普通的 am-linux-gcc 编译 C 程序。 .
- Oracle自增ID实现
- 高性能PCB設計
- ERROR 1044 (42000): Access denied for user ''@'localhost' to database 'mysql