编译内核Ipk文件的开发

怎样开发ipk程序?我也在研究,转载本论坛的一个帖子,那个热度不高。。。。
今天在网上看见Limo GTK开发软件程序就下载下来了,上传在这上边。借此希望可以给高手们开发软件一个参考!有用的话就加点魅力吧!

Limo GTK开发第一步:搭建交叉编译环境

关于Limo的开发环境,limo开发达人euzen和eric都曾做过介绍,这里再次拿出来写,主要是为了自己万一系统挂了重新来,不用到处翻资料,呵呵

进行Limo开发可以用到的工具常见的有两种:纯linux环境下的scratchbox以及可适用于linux和xp环境的codeblock

scratchbox的搭建相当复杂,euzen曾对此有介绍:i8320交叉编译环境搭建,可惜本人非专业人士,尝试了几次都失败了

只好转投eric的codeblock,这里是eric的文章:mswindows下的limo开发环境

eric只说明了xp下搭建的方法,其实linux下的搭建方法也是大同小异,只不过是需要下载的东西不一样而已

以下内容部分一用eric的文章:

1.准备工作:

a.下载编译器arm-2007q3-51:http://www.codesourcery.com/sgpp/lite/arm/portal/release313

   linux下请下载IA32GNU/Linux Installer或者IA32 GNU/Linux Tar

   xp下请下载IA32 WindowsInstaller或者IA32 Windows Tar

b.下载IDE  codeblock:http://www.codeblocks.org/downloads

    根据自己的系统选择下载

c.下载SDK:limo没有给我们准备sdk,只好自己收集了,幸好有euzen

   第一部分, 头文件:

    下载: euzen给大家准备好的

       http://hi.baidu.com/euzen/blog/item/0cd732d0891b443a970a16bb.html

       或者:http://opensource.samsung.com/ 找GT-I8320_OpenSource_Update3.zip

       提取\browser-engine\include\os内的文件

       第二部分:库文件:

              从rom解压出factoryfs.cramfs,再从factoryfs.cramfs中提出lib目录。
    注意:从rom中解压出的lib有部分是链接文件,不是真正的so库文件。需要用cp -b命令,会自动复制转换成真正的so文件。


2. 配置

(1) 将arm-2007q3-51安装到 xxx\i8320\dev\arm-2007q3

(2) 将include头文件,放到 xxx\i8320\sdk\include (可以放到别的地方,后面的步骤做相应的修改)

(3) 将lib库文件,放到 xxx\i8320\sdk\lib (可以放到别的地方,后面的步骤做相应的修改)



(4) codeblocks配置:

    菜单”Settings”->”Compilerand debugger…”.

    弹出“Globalcompiler settings”对话框->

”selected compiler” 选择GUN ARM GCCCompiler


然后

a.

选中下面”Toolchain executables”页,修改此页所有项目(新手没法上图)

Compiler's installation directory:xxx\i8320\dev\arm-2007q3

C compiler:arm-none-linux-gnueabi-gcc.exe(linux下没后缀)

C++ compiler:arm-none-linux-gnueabi-g++.exe

Linker for dynamic libs:arm-none-linux-gnueabi-g++.exe

Linker for static libs:arm-none-linux-gnueabi-ar.exe

Debugger:arm-none-linux-gnueabi-gdb.exe

Resurce compiler:NA

Make program:cs-make.exe


b.选择“Search directories”页,修改如下

Compiler:

F:\down\i8320\dev\arm-2007q3

F:\down\i8320\dev\arm-2007q3\include

F:\down\i8320\dev\arm-2007q3\lib\gcc\arm-none-linux-gnueabi\4.2.1\include

F:\down\i8320\dev\arm-2007q3\arm-none-linux-gnueabi\include

F:\down\i8320\sdk\include

F:\down\i8320\sdk\include\atk-1.0

F:\down\i8320\sdk\include\cairo

F:\down\i8320\sdk\include\glib-2.0

F:\down\i8320\sdk\include\gtk-2.0

F:\down\i8320\sdk\include\pango-1.0

F:\down\i8320\sdk\include\X11

必须的好像就这几个,未来开发中还要视情况添加


Linker:

D:\i8320\Develop\sdk\lib

D:\i8320\Develop\dev\arm-2007q3\lib

D:\i8320\Develop\dev\arm-2007q3\arm-none-linux-gnueabi\lib

D:\i8320\Develop\dev\arm-2007q3\arm-none-linux-gnueabi\libc

D:\i8320\Develop\dev\arm-2007q3\arm-none-linux-gnueabi\libc\lib

D:\i8320\Develop\dev\arm-2007q3\arm-none-linux-gnueabi\libc\usr\lib

D:\i8320\Develop\dev\arm-2007q3\lib\gcc\arm-none-linux-gnueabi\4.2.1

D:\i8320\Develop\sdk\SDL-1.2.14\src

D:\i8320\Develop\sdk\SDL-1.2.14\src\stdlib

D:\i8320\Develop\sdk\lib\gconf\2


c.选择”Linker settings”

左边窗口点add,输入libgtk-x11-2.0

后边窗口直接输入-Wl,-rpath=F:\down\i8320\sdk\lib\    

(很多人不知道这里怎么选择,我当初也是研究了半天呢,才发现不是选择,是直接输入)

到此为止,编译环境就算搭建完成了,可以helloworld了

编译吗,makefile太麻烦,直接点Build


Limo GTK开发第二步:New project

CodeBlock->File->New->Project...->Emptyproject->Go

Project Title输入项目名称->Next

Compiler选GNU ARM GCC Compiler,下面Debugger的勾可以去掉,因为在电脑上没法debugger所以没用-Finish

点击new file->empty file

然后就可以开始了,helloworld不好玩,试试Limo的范例吧:

view plaincopy toclipboardprint?



#define BLACK_THEME//这句必须加上,不然编译不过去  

#include<gtk/gtk.h>  

/*callback function to show a widget*/  

void show_widget(GtkWidget *widget, GtkWidget *button, gpointer data)  

{  

gtk_widget_show(GTK_WIDGET(data));  

}  

/*callback function to hide a widget*/  

void hide_widget(GtkWidget *widget, GtkWidget *button, gpointer data)  

{  

gtk_widget_hide(GTK_WIDGET(data));  

}  

/*callback function to Quit the application*/  

void kill_app(GtkWidget *widget, GtkWidget *button, gpointer data)  

{  

/* Quits the application */  

gtk_main_quit();;  

}  

/* Program start point */  

int main(int argc, char *argv[])  

{  

GtkWidget *mainwindow;  

GtkWidget *form;  

GtkWidget *label;  

/* This is called in all GTK applications. Arguments are parsed 

* From the command line and are returned to the application. */  

gtk_init(&argc, &argv);  

/* create a main window */  

mainwindow = gtk_main_window_new(GTK_WIN_STYLE_DEFAULT);  

/*Create a form for the main window*/  

form = gtk_form_new(TRUE);  

/*Set title for the form */  

gtk_form_set_title(GTK_FORM(form), "Hello world!");  

/*Adding for to the main window form list*/  

gtk_main_window_add_form(GTK_MAIN_WINDOW(mainwindow), GTK_FORM(form));  

/*Setting the form as the current visible form*/  

gtk_main_window_set_current_form(GTK_MAIN_WINDOW(mainwindow),GTK_FORM(form));  

/*Create a new label and add it to the form*/  

label = gtk_label_new("Hello World");  

gtk_container_add(GTK_CONTAINER(form), label);  

/*Add softkeys with callbacks*/  

gtk_form_add_softkey(GTK_FORM(form), (gchar *)"Show label", NULL, (SoftkeyActionType)SOFTKEY_CALLBACK, show_widget, label);  

gtk_form_add_softkey(GTK_FORM(form), (gchar *)"Hide Label", NULL, (SoftkeyActionType)SOFTKEY_CALLBACK, hide_widget, label);  

gtk_form_add_softkey(GTK_FORM(form), (gchar *)"Back", NULL, (SoftkeyActionType)SOFTKEY_CALLBACK, kill_app, NULL);  

/* The final step is to display main window and its contents.*/  

gtk_widget_show_all(mainwindow);  

gtk_main();  

return 0;  

}  

Limo GTK开发第三步:打包并安装你的程序每次都要用telnet命令行运行是不是有点不爽,那就打包成ipk,在手机中安装使用吧:
一、打包
先来看看ipk的结构(参考euzen博文:http://hi.baidu.com/euzen/blog/item/0666b4dea38742d78c102942.html)
包目录test下包含两个目录
1.目录DEBIAN
内含文件control,内容如下,括号内为备注,不要写到文件中去:
Source: test      (显示在桌面的名称)
Section: Utility   
Package: cn.iEnzo.test      (包名,既安装路径)
Priority: optional    
Version: 0.1       (版本)
Architecture: all
Maintainer: iEnzo     (维护者)
Description: test for i8320    (描述,任写)
Model: app-model-executable    
AppExecFile: test     (执行文件名称)
Vendor: iEnzo         (作者)
Icon: icon.png        (桌面图标,由图标路径决定)
2.目录RES
内含
1)目录bin,内含执行文件,必须跟control文件中的AppExecFile保持一致,这个例子中就是test
2)图标文件,必须跟control文件中的Icon保持一致,这个例子中就是icon.png
当然图片比较多也可以建一个目录保存,比如bitmap,那么control中就要改成Icon:bitmap/icon.png
接下来,如果是在linux环境,则返回test目录上一级
命令行执行 dipkg -b test test.ipk 即可打包一个ipk
如果不想用linux怎么办
在xp环境下可以下载linux的仿真环境cygwin,安装时候记得安装archive相关包(cygwin好像没有dipkg包)
在cygwin命令行中进入test目录,然后
chmod 755 DEBIAN -R
cd DEBIAN
tar zcf ../control.tar.gz ./*
cd ..
chmod 777 RES -R
tar zcf ./data.tar.gz ./RES
ar r test.ipk control.tar.gz data.tar.gz
这样test.ipk就打包好了,也可以把上面的命令做成一个脚本,这样更方便
二、安装
1.首先解除权限的限制
手机上打开拨号界面,输入*#35767#,在随后出现的菜单里有三个选项: 
Not allowed 
Allowed in white list
Allowed
选择Allowed
2.把test.ipk拷贝到手机中,点击开始安装,然后就可以在桌面看到这个test啦

你可能感兴趣的:(编译内核Ipk文件的开发)