linux minigui用什么语言在linux系统编写c语言

MiniGUI皮肤界面普通标签的使用_Linux编程_Linux公社-Linux系统门户网站
你好,游客
MiniGUI皮肤界面普通标签的使用
来源:Linux社区&
作者:jia0511
在skindemo.c中并没有普通标签的使用方法,花了点时间研究出来了,关键是皮肤界面结构体里面的字体成员fonts的赋值,关键代码如下:&static si_nrmlabel_t title ={"Hello", 0xDDFF00, 0xFF0000, 0};&static skin_item_t skin_main_items [] ={&{SIID_TITLE, SI_TYPE_NRMLABEL | SI_TEST_SHAPE_RECT |SI_STATUS_VISIBLE,15, 0, {}, -1, "Title", 0, &title},};&/* 字节资源装/卸载函数 */void load_skin_fonts (skin_head_t *skin, BOOL load){&int font_num = 2;&LOGFONT *my_&&if (load)&{& skin-&fonts = (LOGFONT* ) calloc (font_num, sizeof(LOGFONT));& my_logfont = CreateLogFont (NULL, "song", "GB2312", && FONT_WEIGHT_REGULAR, FONT_SLANT_ROMAN, FONT_SETWIDTH_NORMAL,&& FONT_SPACING_CHARCELL, FONT_UNDERLINE_NONE, FONT_STRUCKOUT_NONE, 12, 0);& memcpy((void *)&skin-&fonts[0], (void *)my_logfont, sizeof(LOGFONT));& DestroyLogFont(my_logfont);/* 释放字体 */& my_logfont = CreateLogFont (NULL, "SansSerif", "ISO8859-1", &&&&&&&&&&&&&& FONT_WEIGHT_REGULAR, FONT_SLANT_ITALIC, FONT_SETWIDTH_NORMAL,&&&&&&&&&&&&&&&&&&&& FONT_SPACING_CHARCELL, FONT_UNDERLINE_NONE, FONT_STRUCKOUT_LINE, &&&&&&&&&&&&&&&&&&&&&&& 16, 0);& memcpy((void *)&skin-&fonts[1], (void *)my_logfont, sizeof(LOGFONT));& DestroyLogFont(my_logfont);/* 释放字体 */&}&else&{& free ((void *)skin-&fonts);&}}
然后再主函数中调用,完成卸载即可.
相关资讯 & & &
& (09/11/:49)
& (08/01/:40)
& (03/27/:50)
& (07/31/:48)
& (05/14/:42)
& (01/04/:40)
   同意评论声明
   发表
尊重网上道德,遵守中华人民共和国的各项有关法律法规
承担一切因您的行为而直接或间接导致的民事或刑事法律责任
本站管理人员有权保留或删除其管辖留言中的任意内容
本站有权在网站内转载或引用您的评论
参与本评论即表明您已经阅读并接受上述条款博客访问: 1048219
博文数量: 687
博客积分: 13857
博客等级: 上将
技术积分: 11863
注册时间:
IT168企业级官微
微信号:IT168qiye
系统架构师大会
微信号:SACC2013
分类: LINUX
(一)MiniGUI的各种消息的区别
MiniGUI中的消息种类通常可分为系统消息、对话框消息、窗口绘制消息、窗口创建和销毁消息、键盘和鼠标(后处理)消息以及用户自定义消息。
总结使用消息时需注意的问题:
1.PostMessage和SendMessage函数的区别即前者将消息置于指定窗口的消息队列后便返回,通常用于发送一些非关键性信息(如键盘和鼠标消息),而后者则是通知指定窗口的窗口过程立即完成某项任务后才.“PostMessage是非阻塞的,而SendMessage是阻塞的。结和源码说明,为什么SendMessage是阻塞的。注意:SendMessage有两种工作模式”
&&&&& PostMessage和SendMessage的实现源码,在MiniGUI-Threads运行模式下,PostMessage仅把消息添加至消息队列即返回成功(消息队列满或没有消息队列时都会立即返回相应的信息,故为非阻塞的);而SendMessage当处理的消息在同一线程内时立即将调用窗口过程或桌面过程处理函数,当处理的消息不在同一线程时将会调用SendasyncMessage来处理,这个函数会使发送线程将阻塞(等待接收线程处理的结果)。
SendMessage是同步消息,但是有同线程同步消息和异线程同步消息。牢记这个概念,对以后的调试有用。
2.定时器消息
(MSG_TIMER)是优先级最低的消息类型,只有消息队列中不存在其他类型的消息时,系统才会去检查是否定时器。
通过阅读minigui源码message.c文件,总结出消息的优先级如下:(由高至低)
Timer消息的确是优先级最低的,这也是MMI部分不能通过MSG_TIEMR来实现照相机延迟拍摄、秒表、录音时间统计等功能。
MSG_QUIT< MSG_NOTIFY< MSG_SYNC(包括MSG_COMMAND、MSG_INITDIALOG、 MSG__SETTEXT、MSG_GETTEXT、MSG_FONTCHANGED、MSG_CREATE、MSG_NCCREATE、MSG_DESTROY、MSG_CLOSE等)<MSG_PAINT& MSG_POST(包括MSG_KEYDOWN、MSG_CHAR、MSG_LBUTTONDOWN、MSG_MOUSEMOVE等) & MSG_TIMER。
响应顺序是:
3.SendNotifyMessage函数和PostMessage类似,即不等待消息被处理就返回,但其不同在于该函数发送的消息不会因缓冲区满而。
SendNotifyMessage为什么不会丢失?而PostMessage又为什么会丢失。
4.Minigui针对控件的通知消息处理引入了SetNotificationCallback函数,该函数可以为控件设置一个通知消息的回调函数,当控件有通知消息时,将调用该函数,而不是发送通知消息到父窗口。
5.当钩子回调函数是在桌面线程中执行时,不能在该回调函数中向其他线程以SendMessage方式发送消息。
6.关于消息的优先级,SendMessage发出的消息应该是优先级最高的,其次是SendNotifyMessage发出的消息,最后是PostMessage发出的消息,在PostMessage的所有消息中又以定时器消息的优先级。
几个重要消息的使用意义:
1.MSG_NCCREATE :处理该消息时不能使用GetDC等函数获得该窗口的设备上下文,也不能在MSG_NCCREATE消息中建立子窗口。(原因:该消息在minigui建立主窗口的过程中被发送,此时窗口对象未建立。对于输入法窗口,必须在该消息处理中注册)。
2.MSG_SIZECHANGING:通过改变该消息的默认处理,可使消息窗口尺寸固定。
3.MSG_CREATE:通过判断该消息的返回值,可确定窗口创建/添加操作是否成功。
4.MSG_FONTCHANGING:若窗口不允许用户改变默认字体,则截获该消息并返回非零值。
5.MSG_FONTCHANGED:窗口过程收此消息后,就可以进行一些处理一反映出新的字体设置。
6.MSG_PAINT:该消息在窗口重绘时发送到窗口过程,应用程序在处理完该消息后应直接返回。
7.MSG_CLOSE:应用程序在响应该消息时调用DestroyMainWindow销毁主窗口。
8.MSG_ERASEBKGND:用于清除窗口背景,默认窗口过程是用背景色刷新窗口客户区,也可在消息处理中进行填充图片操作。
9.MSG_DESTROY:该消息用来通知系统销毁一个窗口。需注意的是在使用非模式对话窗口和普通主窗口时应遵循如下几个策略:a。应用程序应在MSG_DESTROY消息中销毁被托管主窗口的位图、字体等资源;b.在被托管主窗口响应MSG_CLOSE消息时,调用DestroyMainWindow函数并调用MainWindowCleanup函数;c.在托管主窗口中,处理MSG_CLOSE消息,并调用DestroyMainWindow。
注意b的内容,这一点我们目前经常会遗漏,造成内存泄露。请说明b释放了什么资源?&
&释放的是结构体PMAINWIN的空间,实际上就是HWND地址所指向的内容。可以结合CreateMainWindow看一下。
(二)HDC的各种创建方式、使用条件
在MiniGUI中设备上下文分为图形设备上下文、系统内存中的设备上下文和屏幕设备上下文三种。下面对上述几种设备上下文中HDC的创建方式和使用条件进行简要说明。
1.图形设备上下文中HDC的创建方式和使用条件
a.创建HDC的方式之一是通过BeginPaint函数,函数原型如下:
HDC GUIAPI BeginPaint(HWND hWnd);//实际通过调用GetClientDC函数实现
使用条件:此函数只能在处理MSG_PAINT的消息中调用
b.创建HDC的方式也可通过GetDC\GetClientDC函数,函数原型如下:
HDC GUIAPI GetDC(HWND hwnd);//所获取的设备上下文是针对整个窗口
HDC GUIAPI GetClientDC(HWND hwnd);//所获取的设备上下文是针对窗口客户区
使用条件:避免同时使用多个设备上下文,避免在递归中调用
c.创建HDC还可通过CreatePrivateDC\CreatePrivateClientDC\GetPrivateClientDC函数(原型略)
使用注意:若建立主窗口时设定了WS_EX_USEPRIVATEDC风格则CreateMainWindow会自动为该窗口函数建立HDC,或控件类具有CS_OWNDC属性时属于该控件类的控件也将自动建立HDC。
&&& 在a、b、c所描述的HDC创建方式中,a、b中的HDC在使用完后需及时释放,而c“使用注意”中两种情况的HDC是伴随整个窗口生命期使用后不需另调用释放函数。
2.系统内存中的设备上下文
创建方式是通过CreateCompatibleDC函数;函数原型:
HDC GUIAPI CreateCompatibleDC(HDC hdc).
3. 屏幕设备上下文
& MiniGUI在启动之后,就建立一个全局HDC。该DC用HDC_SCREEN标识,不需进行创建和释放操作。
HDC的复制使用:
在TD272的主菜单源码中函数lct_idle_wind_cnt_proc()和lct_idle_wallpaper_proc()处理消息MSG_PAINT时都通过函数CreateCompatibleDC()把“图形设备上下文”的HDC复制为“系统内存中的设备上下文”,这样做之后即在系统内存中建立一个类似显示内存的区域,然后在该区域进行图形操作,结束后再复制到显示内存。这种方式的意义在于绘图速度快、能减少直接操作显存可能造成的闪烁。
CreateCompatibleDC的使用的确可以避免闪烁,同时结合DC的复制,还可以实现显示的放大、缩小,甚至通过计时器还可以实现动画效果。当然,还有一些其他用途。
(三)字串显示风格
在MiniGUI中字串的显示可通过TextOutLen、TabbedTextOutLen、TabbedTextOutEx、DrawTextEx函数实现,下面依次说明各函数的功能。
&& TextOutLen:用来在给定位置输出指定长度的字符串。
TabbedTextOutLen:用来输出格式化字符串。
TabbedTextOutEx:用来输出格式化字符串,但可以指定字符中每个TAB键的位置
DrawTextEx:以不同的对齐方式在指定的矩形内部输出文本。
&(四)窗口的创建方式和默认处理函数
&&&&& 窗口分为主窗口、对话框和控件三类,下面分别列出了三种窗口的创建原型和默认处理函数原型:
CreateMainWindow(MAINWINCREATE*);//创建主窗口
Int DefaultMainWinProc (HWND hWnd, int message, wPARAM wParam, LPARAM lParam);
Int GUIAPI DialogBoxIndirectParam(PDLGTEMPLATE pDlgTemplate, HWND hOwner, WNDPROC DlgProc, LPARAM lParam);//创建模态
HWND GUIAPI CreateMainWindowIndirect(PDLGTEMPLATE pDlgTemplate , HWND hOwner, WNDPROC DlgProc );//创建非模态对话框
Int DefaultDialogProc (HWND hWnd, int message, wPARAM wParam, LPARAM lParam);
BOOL GUIAPI RegisterWindowClass(PWNDCLASS pWndClass);//注册控件类
&&&& Int& GUIAPI CreateWindow(class_name, caption, style, id, x, y, w, h, parent, add_data);//创建控件
阅读(1317) | 评论(0) | 转发(1) |
相关热门文章
给主人留下些什么吧!~~
请登录后评论。minigui在linux中的使用,最全面的minigui在linux中的使用论坛 - 电子工程世界网
minigui在linux中的使用
minigui在linux中的使用相关帖子
,WinCE的开发和Windows下的开发基本一样,学起来简单得多,但是学linux或者使用linux做嵌入式的人就是远比WinCE多。在和很多工作的人交流时我了解到,他们公司从没考虑使用WinCE,因为成本高,都是使用linux进行开发。我读研究生的的实验室中也没有使用WinCE的,大都研究linux,也有少部分项目使用vxwork,但是就没有听说过使用WinCE的,原因就是开源!当然现在...
的是,WinCE的开发和Windows下的开发基本一样,学起来简单得多,但是学linux或者使用linux做嵌入式的人就是远比WinCE多。在和很多工作的人交流时我了解到,他们公司从没考虑使用WinCE,因为成本高,都是使用linux进行开发。我读研究生的的实验室中也没有使用WinCE的,大都研究linux,也有少部分项目使用vxwork,但是就没有听说过使用WinCE的,原因就是开源!当然现在...
,学起来简单得多,但是学linux或者使用linux做嵌入式的人就是远比WinCE多。在和很多工作的人交流时我了解到,他们公司从没考虑使用WinCE,因为成本高,都是使用linux进行开发。我读研究生的的实验室中也没有使用WinCE的,大都研究linux,也有少部分项目使用vxwork,但是就没有听说过使用WinCE的,原因就是开源!当然现在WinCE6.0听说也开源,不过在成本和资源上linux...
;&《使用busybox制作根文件系统》
ubifs介绍及在ARM Linux上的使用& && &&&
ubifs镜像制作工具& && &&&虚拟机上已安装,无需用户再编译安装
ubifs制作命令& && &&nbsp...
简单得多,但是学linux或者使用linux做嵌入式的人就是远比WinCE多。在和很多工作的人交流时我了解到,他们公司从没考虑使用WinCE,因为成本高,都是使用linux进行开发。我读研究生的实验室中也没有使用WinCE的,大都研究linux,也有少部分项目使用vxwork,但是就没有听说过使用WinCE的,原因就是开源!当然现在WinCE6.0听说也开源,不过在成本和资源上linux已经有了...
)。飞漫软件走过的十年历程,基本浓缩了中国嵌入式软件行业发展的十年。
笔者之所以说这是成功的十年,是因为飞漫软件打造了一个成功的系统级软件,在中国嵌入式软件技术发展的历程中留下了或浓或淡的一笔。使用 MiniGUI 的各类嵌入式设备,不完全统计至少有两亿部。仅华为终端使用 MiniGUI 开发的数码相框类产品,就接近或超过一亿部出货。另外,功能手机方面,总出货量已接近一亿部,而且该数字在未来的几...
简单得多,但是学linux 或者使用linux 做嵌入式的人就是远比WinCE 多。在和很多工作 的人交流时我了解到,他们公司从没考虑使用WinCE,因为成本高,都是使用linux 进行开发。我读研究生 的的实验室中也没有使用WinCE 的,大都研究linux,也有少部分项目使用vxwork,但是就没有听说过使 用WinCE 的,原因就是开源!当然现在WinCE6.0听说也开源,不过在成本和资源上...
我打算在UC/OS-II上直接移植一个开源的GUI界面。所以我从网上找了一些GUI的开源代码,主要看了看飞漫软件的MiniGUI和Micrium公司的uC/GUI。飞漫软件的MiniGUI可免费下载的版本是1.3.3,可是不支持UC/OS-II,网上的介绍中比较适合移植到LINUX。飞漫软件已经发行了可以在UC/OS-II上运行的版本,但已经是商业版本了,不是我可以随便下载的了。uC/GUI比较...
,但事情没有这么简单。首先它的价格并不如第一眼看到的那么美好,因为运行Raspberry Pi,你需要提供SD卡,而这额外增加了5%到10%的成本。此外,抛开每秒运转速率的相似性能不谈,在我们的测试 中,BeagleBone的运转速度几乎是Raspberry Pi的两倍。如果你的项目需要接入外部感应设备,BeagleBone有模拟数字信号接口,这让你轻松的连接输出不同电压的设备。BeagleBone...
就是远比WinCE多。在和很多工作的人交流
时了解到,他们公司从没考虑使用WinCE,因为成本高,都是使用linux进行开发。
在学校里,大都研究linux,也有少部分项目使用vxwork,但是就没有听说过使用
WinCE的,原因就是开源!当然现在WinCE6.0听说也开源,不过在成本和资源上
linux已经有了无人能挡的优势。与此相对应的是,越来越多的电子厂商已经开始使
用linux...
烧写到板子上。
  GIS开发
  在嵌入式产品中使用MiniGUI之前,开发人员通常先在PC机上安装MiniGUI,然后使用PC机来编写MiniGUI应用程序,调试运行成功后再将其移植到嵌入式产品上运行。我们根据这种编程模式利用MiniGUI开发了一个地理信息系统。该系统能完成电子地图的显示、放大、缩小、漫游等基本功能,为提高系统性能,系统采用了以下处理技术。
  1.为了使系统取得合理的...
参考资料。建议使用、移植一个不算很新的版本内核,这样到时学驱动的编程就有足够的资料了。这部分的推荐书籍可以参考另一篇文章《推荐几本学习嵌入式linux的书籍》。第六,研究应用程序的编写。做作品做项目除了编写驱动程序,最后还要编写应用程序。现在的趋势是图形应用程序的开发,而图形应用程序中用得最多的还是qt/e函数库。建议使用国产的MiniGUI函数库。MiniGUI的编程比较相似Windows下的VC...
,学起来简单得多,但是学linux或者使用linux做嵌入式的人就是远比WinCE多。在和很多工作的人交流时我了解到,他们公司从没考虑使用WinCE,因为成本高,都是使用linux进行开发。我读研究生的的实验室中也没有使用WinCE的,大都研究linux,也有少部分项目使用vxwork,但是就没有听说过使用WinCE的,原因就是开源!当然现在WinCE6.0听说也开源,不过在成本和资源上linux...
。&  7)制作ramdisk。&  8)将ramdisk烧写到板子上。&  GIS开发&  在嵌入式产品中使用MiniGUI之前,开发人员通常先在PC机上安装MiniGUI,然后使用PC机来编写MiniGUI应用程序,调试运行成功后再将其移植到嵌入式产品上运行。我们根据这种编程模式利用MiniGUI开发了一个地理信息系统。该系统能完成电子地图的显示、放大...
linux的书籍》。&
第六,研究应用程序的编写。& 做作品做项目除了编写驱动程序,最后还要编写应用程序。现在的趋势是图形应用程序的开发,而图形应用程序中用得最多的还是qt/e函数库。我一直就使用这个函数库来开发自己的应用程序,不过我希望你能使用国产的MiniGUI函数库。盗用周杰伦的广告词就是“支持国产,支持MiniGUI”。MiniGUI的编程比较相似Windows下的...
编写。& 您有任何关于福州嵌入式培训的疑问,欢迎咨询在线老师  &&&&&& 做作品做项目除了编写驱动程序,最后还要编写应用程序。现在的趋势
是图形应用程序的开发,而图形应用程序中用得最多的还是qt/e函数库。我一直
就使用这个函数库来开发自己的应用程序,不过我希望你能使用国产的MiniGUI
函数库。  &nbsp...
Windows下的开
发基本一样,学起来简单得多,但是学linux或者使用linux做嵌入式的人就是远
比WinCE多。在和很多工作的人交流时我了解到,他们公司从没考虑使用WinCE,
因为成本高,都是使用linux进行开发。我读研究生的的实验室中也没有使用
WinCE的,大都研究linux,也有少部分项目使用vxwork,但是就没有听说过使用
WinCE的,原因就是开源!当然现在...
Windows下的开发基本一样,学起来简单得多,但是学linux或者使用linux做嵌入式的人就是远比WinCE多。在和很多工作的人交流时我了解到,他们公司从没考虑使用WinCE,因为成本高,都是使用linux进行开发。我读研究生的的实验室中也没有使用WinCE的,大都研究linux,也有少部分项目使用vxwork,但是就没有听说过使用WinCE的,原因就是开源!当然现在WinCE6.0听说也开源,不过在...
的推广,我曾经幻想过与北京飞漫公司(就是MiniGUI的版权拥有者)合作使用MiniGUI函数库开发像qtopia这样的图形操作平台,不过由于水平有限这只能是幻想了,呵呵。完成这一步你基本就学完了嵌入式linux的全部内容了。还有一个小小的经验想和大家分享。我在学习嵌入式linux的过程中很少问人,客观原因是身边的老师、同学师兄都没有这方面的高手,主观原因是我不喜欢问人,喜欢自己研究解决问题。这样...
的推广,我曾经幻想过与北京飞漫公司(就是MiniGUI的版权拥有者)合作使用MiniGUI函数库开发像qtopia这样的图形操作平台,不过由于水平有限这只能是幻想了,呵呵。完成这一步你基本就学完了嵌入式linux的全部内容了。还有一个小小的经验想和大家分享。我在学习嵌入式linux的过程中很少问人,客观原因是身边的老师、同学师兄都没有这方面的高手,主观原因是我不喜欢问人,喜欢自己研究解决问题。这样...
你可能感兴趣的标签
热门资源推荐君,已阅读到文档的结尾了呢~~
基于Linux的MiniGUI线程动画编程方法
扫扫二维码,随身浏览文档
手机或平板扫扫即可继续访问
基于Linux的MiniGUI线程动画编程方法
举报该文档为侵权文档。
举报该文档含有违规或不良信息。
反馈该文档无法正常浏览。
举报该文档为重复文档。
推荐理由:
将文档分享至:
分享完整地址
文档地址:
粘贴到BBS或博客
flash地址:
支持嵌入FLASH地址的网站使用
html代码:
&embed src='/DocinViewer-4.swf' width='100%' height='600' type=application/x-shockwave-flash ALLOWFULLSCREEN='true' ALLOWSCRIPTACCESS='always'&&/embed&
450px*300px480px*400px650px*490px
支持嵌入HTML代码的网站使用
您的内容已经提交成功
您所提交的内容需要审核后才能发布,请您等待!
3秒自动关闭窗口miniStudio设计minigui界面并移植到linux开发板上
[此文档并非安装minigui在PC端的linux平台下,而是给开发板搭建minigui的运行所需要的类库等环境]
安装pc端的minigui类库基本上都是:
./configure
&-----------------------------------------------------------------
pc平台:ubuntu10.04
开发板:FriendlyARM
交叉编译工具:arm-linux-gcc
minigui版本:3.0.12
一,miniGUI编译安装
交叉编译工具arm-linux-gcc
相关文件库:从官网处下载()
1、安装miniGUI需要的库:
freetype-2.3.9-fm.tar.gz
jpegsrc.v7.tar.gz
libmgplus-1.2.4.tar.gz
libminigui-gpl-3.0.12.tar.gz
libpng-1.2.37.tar.gz
mg-samples-3.0.12.tar.gz
minigui-res-be-3.0.12.tar.gz
zlib-1.2.2.tar.gz
从windows下miniStdio移植程序,编译说需要的库
libmgutils-1.0.4.tar.gz
libmgncs-1.0.8.tar.gz
依赖关系:
libpng (zlib);
libmgplus(libminigui)
mg-samples(libminigui,libmgplus)
libmgncs(libmgutils);
$ ./configure --target=arm-linux --host=arm-linux
--prefix=/home/song/miniGUI/target CC=arm-linux-gcc
CPP=arm-linux-cpp LD=arm-linux-ld AR=arm-linux-ar
RANLIB=arm-linux-ranlib STRIP=arm-linux-strip
$ make install
$ ./configure --build=i686-linux --host=arm-linux
--prefix=/home/song/miniGUI/target CC=arm-linux-gcc
CPP=arm-linux-cpp LD=arm-linux-ld AR=arm-linux-ar
RANLIB=arm-linux-ranlib STRIP=arm-linux-strip
$ make install
$ ./configure --shared --prefix=/home/song/miniGUI/target
修改Makefile,将编译相关的设置改成交叉工具链
$ make install
$ cp scripts/makefile.linux Makefile
21 # Utilities:
22 AR_RC=ar rc
24 MKDIR_P=mkdir -p
25 LN_SF=ln -sf
26 RANLIB=ranlib
21 # Utilities:
22 AR_RC=arm-linux-ar rc
23 CC=arm-linux-gcc
24 MKDIR_P=mkdir -p
25 LN_SF=ln -sf
26 RANLIB=arm-linux-ranlib
32 prefix=/usr/local
32 prefix=/home/song/miniGUI/target/
修改zlib库路径
# Where the zlib library and include files are located.
#ZLIBLIB=/usr/local/lib
#ZLIBINC=/usr/local/include
ZLIBLIB=$(prefix)/lib
ZLIBINC=$(prefix)/include
$ make install
LIBMINIGUI
$ ./configure --build=i686-linux --target=arm-linux
--host=arm-linux --prefix=/home/song/miniGUI/target
CC=arm-linux-gcc CPP=arm-linux-cpp CXX=arm-linux-g++
LD=arm-linux-ld AR=arm-linux-ar RANLIB=arm-linux-ranlib
STRIP=arm-linux-strip
Going to generate license pictures ...
./configure: line 15530: ./runme.sh: No such file or
$ vim src/newgal/pcxvfb/Makefile
修改194行,将/usr/include去掉:
INCLUDES = -I$(abs_top_srcdir)/src/include
-I$(abs_top_srcdir)/include \
-I$(abs_top_srcdir)/src/newgal/ -I/usr/include/
否则编译pcxvfb.c将出错
$ make install
$ CC=arm-linux-gcc CXX=arm-linux-g++ ac_ct_CXX=arm-linux-g++
MINIGUI_CFLAGS=-I/home/song/miniGUI/target/include
CPPFLAGS=-I/home/song/miniGUI/target/include
MINIGUI_LIBS=-L/home/song/miniGUI/target/lib-lminigui_ths-ljpeg-lpng-ldl-lm-lpthread
./configure --prefix=/home/song/miniGUI/target --build=i686-linux
--host=arm-linux --target=arm-linux
$ make install
--------------------------
MG-SAMPLES
(由于不管怎么写类库的路径,他就是不在home/song/miniGUI/target/lib下找,他总是在/usr/local/lib下找,但是/usr/local/lib下的为gcc编译的linux环境的类库,所以肯定会出错。这个东西弄了好几天才琢磨明白。)
/usr/local/
/home/song/miniGUI/target/lib ./
【上边三个命令执行完毕之后开始执行下边的./configure,直到此处的交叉编辑工作全部结束,记得一定要把此处改回原来,不然对以后的操作造成影响。】
$ ./configure --target=arm-linux --host=arm-linux
--prefix=/home/song/miniGUI/target CC=arm-linux-gcc
CPP=arm-linux-cpp LD=arm-linux-ld AR=arm-linux-ar
RANLIB=arm-linux-ranlib STRIP=arm-linux-strip
CFLAGS="-I/home/song/miniGUI/target/include"
$ cd src/ # 生成的可执行程序放在此目录,需手动复制
------------------------
MINIGUI-RES
这些资源与平台无关,大致是一些图片
$ ./configure --prefix=/home/song/miniGUI/target
$ make install
执行install之后,会安装到target目录下的share文件夹
修改MiniGUI.cfg
将MiniGUI.cfg的开头部分改为:
# GAL engine and default options
gal_engine=fbcon
defaultmode=800x480-16bpp (对应板子分辨率)
【这里跟机子有关,我的机子是32bpp,如果分辨率有问题,可以调动几次试试】
# IAL engine
ial_engine=console
mdev=/dev/input/mice
mtype=IMPS2
defaultmode=800x480-32bpp 【这里跟机子有关,我的机子是32bpp,如果分辨率有问题,可以调动几次试试】
修改res资源放置的路径,在配置文件中的[cursorinfo]-&cursorpath以及[resinfo]-&respath
否则运行sample程序时会出错。
&修改路径:
103 [cursorinfo]
104 # Edit following line to specify cursor files path
105 cursorpath=/usr/local/share/minigui/res/cursor/
131 [resinfo]
132 respath=/usr/local/share/minigui/res/
比如,运行helloworld时显示:
&get_image_type: unknown type png.
get_image_type: unknown type png.
get_image_type: unknown type png.
get_image_type: unknown type png.
get_image_type: unknown type png.
KERNEL&InitGUI: Count not init mouse cursor!
KERNEL&InitGUI: Init failure, please check your
MiniGUI configuration or resource.
3 移植程序
首先安装依赖库
libmgutils-1.0.4.tar.gz
$ ./configure --target=arm-linux --host=arm-linux
--prefix=/home/song/miniGUI/target CC=arm-linux-gcc
CPP=arm-linux-cpp LD=arm-linux-ld AR=arm-linux-ar
RANLIB=arm-linux-ranlib STRIP=arm-linux-strip
CFLAGS="-I/home/song/miniGUI/target/include"
$ make install
libmgncs-1.0.8.tar.gz
$ ./configure --target=arm-linux --host=arm-linux
--prefix=/home/song/miniGUI/target CC=arm-linux-gcc
CPP=arm-linux-cpp LD=arm-linux-ld AR=arm-linux-ar
RANLIB=arm-linux-ranlib STRIP=arm-linux-strip
CFLAGS="-I/home/song/miniGUI/target/include"
$ make install
把在windows下通过miniStido设计的界面程序复制到linux下
交叉编译界面程序
arm-linux-gcc& -g -O2 -Wall -Wstrict-prototypes
-pipe& -o flight src/FlightGUI.c
src/FlightGUI_main.c -L/home/song/miniGUI/target/lib -lminigui_ths
-ljpeg -ldl -lm -lpthread -lmgplus -lmgncs -lmgutils -lstdc++
-I/home/song/miniGUI/target/include -I./include
-lstdc++是交叉编译工具所带的库(/opt/FriendlyARM/toolschain/4.5.1/arm-none-linux-gnueabi/lib);
4、把/home/song/miniGUI/target
下的文件拷贝到开发板上相应目录下,注意MiniGUI.cfg里面相应路径的配置。【在拷贝类库的时候,建议tar打包之后再复制到U盘,然后放到开发板,这样的软连接不用设置。】
【lib中的类库单独拷出一份开发板的/usr/lib下,整体还是要在/usr/local下。】
5、把编译好的界面程序以及mgncs.cfg 、res文件拷贝到开发板的同一个目录下,运行就可。
注意:在运行程序时会提示你找不到相应的库文件,要建立相应的软连接
用法:ln -s 源文件 目标文件
以上网友发言只代表其个人观点,不代表新浪网的观点或立场。}

我要回帖

更多关于 linux用c 编写服务器 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信