如何在嵌入式设备上跑自己的程序

2100阅读 0评论2016-04-16 wibnmo
分类:LINUX

C应用程序:

----------------------------------------

第一种方法:

 

下载交叉工具链:


下载之后是个bin文件,chmod 777,然后运行,你发现运行不成功,它会提示你怎么改.
之后再运行就成功了,是个图形界面的安装程序.

安装完之后,把环境变量设置好就可以了.

然后就是编译, adb push, 运行.

 

注意编译的时候一定要加--static:

arm-none-linux-gnueabi-gcc --static t.c -o t

 

否则运行时会提示:

/system/bin/sh: ./t: No such file or directory


就这么简单.

链接工具命名:
    arch-vendor-(os-)abi

1、arm-none-linux-gnueabi (ARM architecture, no vendor, linux OS, and the gnueabi ABI)
        用于编译ARM架构的u-boot、linux内核、linux应用等
2、arm-none-eabi 
        用于编译ARM架构的裸机系统(包括linux的 boot、kernel)
3、arm-eabi 
        Android ARM 编译器

 

第二种方法:

 

用android默认的环境.

/*
建立development/test/,然后创建Android.mk test.c
Android.mk内容如下。
然后在源码的根目录下执行:make test
*/
LOCAL_PATH := $(call my-dir)
include $(CLEAR_VARS)
LOCAL_SRC_FILES := test.c
LOCAL_MODULE := test
LOCAL_MODULE_TAGS := optional
include $(BUILD_EXECUTABLE)
 
 
驱动程序:
----------------------------------------
hello.c
#include
#include
 
static int __init hello_init(void)
{
        printk("hellon");
 
        return 0;
}
 
static void __exit hello_exit(void)
{
        printk("exitn");
}
 
module_init(hello_init);
module_exit(hello_exit);
 
MODULE_AUTHOR("Sam");
MODULE_LICENSE("Dual BSD/GPL");
 
Makefile:
obj-m := modules.o
modules-objs := mod.o
KDIR := ../ep680/msm/
PWD := $(shell pwd)
 
default:
        $(MAKE) -C $(KDIR) SUBDIRS=$(PWD) modules
clean:
        $(MAKE) -C $(KDIR) SUBDIRS=$(PWD) clean
        rm -rf Module.markers modules.order Module.symvers
 
 
如果执行有问题添加CROSS_ARCH试一下。
obj-m := mod.o
mod-objs := hello.o
#KDIR := /lib/modules/$(shell uname -r)/build
KDIR := ../ep680/msm/
CROSS_ARCH := ARCH=arm CROSS_COMPILE=/usr/local/arm-eabi-4.4.3/bin/arm-eabi-
PWD := $(shell pwd)
 
default:
        #$(MAKE) -C $(KDIR) M=$(PWD) modules
        $(MAKE) $(CROSS_ARCH) -C $(KDIR) SUBDIRS=$(PWD) modules
clean:
        $(MAKE) -C $(KDIR) SUBDIRS=$(PWD) clean
        rm -rf Module.markers modules.order Module.symvers
 
注意:如果在不用交叉编译器,而用gcc,指定的kernel include dir路径是/lib/modules下,那么
一定要用sudo make,否则会出一大堆错误。
上一篇:Android4.1.2 Binder
下一篇:内核中常用的bit操作