android - 将c文件与android bionic c库静态链接

标签 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 链接的正确方法是什么? 如何使最终对象成为存档?

最佳答案

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

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

ar 可能有一些开关...

编辑:开关是 cr

ar -crv <libname> <source_object>

关于android - 将c文件与android bionic c库静态链接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23645653/

相关文章:

android - Intent 选择器对话框在 Activity 标签旁边显示包名称

android - 以特定格式传递查询日期参数

android - 我有一个巨大的图形文件,想为 Google map 创建一个叠加层,我必须创建图 block 吗?

c - 如何使用 C 中的 openssl 调用解密私钥文件并签署一些文本?

ios - “strcmp”未在此范围内声明

c++ - C++的Makefile生成器?

android - AlertDialog 未应用自定义主题

c - 从 OS X 上的 C 中的 dlopen()ed 动态库访问主程序全局变量

c - 优化二分搜索算法

c - 生成文件错误:/usr/bin/ld: cannot find -lsqlite3