静态链接c文件与android仿生c库

时间:2014-05-14 04:29:45

标签: android c makefile bionic

我刚写了一个小的c文件及其头文件。 dev_access.c和dev_access.h

我想将它链接到android中的仿生库,并创建一个静态/动态链接的存档文件。

我的文件位于/ home / preetam / mydev / android源代码位于/ home / preetam / android_source

以下是我当前的makefile

CROSS           := /home/preetam/bin/CodeSourcery/arm2010/Sourcery_G++_Lite/bin/arm-none-linux-gnueabi
CC              := $(CROSS)-gcc
INC_DIR         := /home/preetam/android_source/bionic/libc
CFLAGS          := -Wall -c -I$(INC_DIR)/include

android_hal: dev_access.o
        ${CC} ${CFLAGS} dev_access.c -o dev_access.a

clean:
        rm -f *.o dev_access.a

我不确定哪里出错但是头文件没有链接,一些丢失和重新定义错误即将出现。 以下是控制台输出:

/home/preetam/bin/CodeSourcery/arm2010/Sourcery_G++_Lite/bin/arm-none-linux-gnueabi-gcc -c -Wall -I/home/preetam/android_source/bionic/libc/include -static   -c -o dev_access.o dev_access.c
In file included from /home/preetam/android_source/bionic/libc/include/stdio.h:42,
                 from dev_access.c:1:
/home/preetam/android_source/bionic/libc/include/sys/_types.h:40: fatal error: machine/_types.h: No such file or directory
compilation terminated.
make: *** [dev_access.o] Error 1

首先,我的Makefile是否正确? 什么是将您的程序与仿生libc链接的正确方法? 如何使最终对象成为档案?

1 个答案:

答案 0 :(得分:1)

您应该使用这些包含仿生的路径:

libc/arch-$ARCH/include 
libc/include 
libc/kernel/common 
libc/kernel/arch-$ARCH

ar可能有一些开关......

编辑:开关是cr

ar -crv <libname> <source_object>