Linux应用程序开发
A. linux培训完之后,能从事什么工作
学习linux后可以做linux服务开发、linux内核开发、云计算等工作。想学习linux推荐选择【达内教育】。
1、Linux运维工程师:Linux运维对一个公司非常重要。
2、Linux内核开发:是比较具有难度的工作岗位,在手机公司最常见,工资待遇非常不错,知识单一化,但是操作系统硬件更新非常快,操作理论更高一些。
3、云计算:【云计算】在目前市场上是Linux学习之后从业比较受欢迎的工作,也是比较实用的技术之一,对大数据以及人工智能有着很大的支撑作用,相对于人员从业薪资待遇非常高,同时技术基础要求也是高标准。
4、自动化运维:因为python技术的兴起,让自动化运维广泛运用起来。要求运维人员对开发的掌握程度较高。也是目前的高薪岗位之一。感兴趣的话点击此处,免费学习一下
想了解更多有关linux从事工作的相关信息,推荐咨询【达内教育】。秉承“名师出高徒、高徒拿高薪”的教学理念,是达内公司确保教学质量的重要环节。作为美国上市职业教育公司,诚信经营,拒绝虚假宣传是该机构集团的经营理念。该机构在学员报名之前完全公开所有授课讲师的授课安排及背景资料,并与学员签订《指定授课讲师承诺书》,确保学员利益。达内IT培训机构,试听名额限时抢购。
B. Flutter开发——Linux嵌入式应用开发
上文中 介绍了Linux平台下Flutter环境搭建和桌面应用开发,现在需要更深入了解如何将该应用运行在Linux系统的嵌入式设备上。
安装及示例
在 ~/.bashrc 中配置 export PATH=$PATH:/opt/flutter-elinux/bin
打开weston虚拟机,此时发现 flutter-elinux devices 连接设备变成两个,如下图
即可编译及运行基于wayland显示后端的demo
避坑
C. linux系统的程序用什么开发
Linux系统用的gcc编译器,Linux是一个纯C语言的操作系统。
D. 嵌入式LINUX应用程序开发和系统开发有什么区别
驱别在一个主要是应用层软件的开发,而系统式开发主要是驱动接口,内核配置交叉编译,内核取点,busybox,等等方面。相对来说,系统式开发的要求比较高。外面嵌入式linux的书都比较多,基本上大同小异,OREILLY的书还可以的。
E. 如果想学Linux,应该怎么学
学嵌入式Linux要先学以下几点:
1.C语言。要有C语言的基础,当然越熟练越好,不熟也没关系,具备基本技能就可以:比如写一个数组排序、输入数字求和什么的。C语言的学习就是多些多练。
2.Linux基础
Linux操作系统的概念、安装方法,详细了解Linux下的目录结构、基本命令、编辑器VI ,编译器GCC,调试器GDB和 Make 项目管理工具, Shell、 Makefile脚本编写等知识,嵌入式开发环境的搭建。
3.Linux系统编程
重点学习标准I/O库,Linux多任务编程中的多进程和多线程,以及进程间通信(pipe、FIFO、消息队列、共享内存、signal、信号量等),同步与互斥对共享资源访问控制等重要知识,主要提升对Linux应用开发的理解和代码调试的能力。
4.Linux网络编程
计算机网络在嵌入式Linux系统应用开发过程中使用非常广泛,通过Linux网络发展、TCP/IP协议、socket编程、TCP网络编程、UDP网络编程、Web编程开发等方面入手,全面了解Linux网络应用程序开发。重点学习网络编程相关API,熟练掌握TCP协议服务器的编程方法和并发服务器的实现,了解HTTP协议及其实现方法,熟悉UDP广播、多播的原理及编程方法,掌握混合C/S架构网络通信系统的设计,熟悉HTML,javascript等Web编程技术及实现方法。
5.数据结构与算法
数据结构及算法在嵌入式底层驱动、通信协议、及各种引擎开发中会得到大量应用,对其掌握的好坏直接影响程序的效率、简洁及健壮性。此阶段的学习要重点理解数据结构与算法的基础内容,包括顺序表、链表、队列、栈、树、图、哈希表、各种查找排序算法等应用及其C语言实现过程。
6.Cortex A8 、Linux 平台开发
通过基于ARM Cortex-A8处理s5pv210了解芯片手册的基本阅读技巧,掌握s5pv210系统资源、时钟控制器、电源管理、异常中断控制器、nand flash控制器等模块,为底层平台搭建做好准备。Linux平台包括内核裁减、内核移植、交叉编译、GNU工具使用、内核调试、Bootloader介绍、制作与原理分析、根文件系统制作以及向内核中添加自己的模块,并在s5pv210实验平台上运行自己制作的Linux系统,集成部署Linux系统整个流程。同时了解Android操作系统开发流程。Android系统是基于Linux平台的开源操作系统,该平台由操作系统、中间件、用户界面和应用软件组成,是首个为移动终端打造的真正开放和完整的移动软件,目前它的应用不再局限于移动终端,还包括数据电视、机顶盒、PDA等消费类电子产品。
7.驱动开发
驱动程序设计是嵌入式Linux开发工作中重要的一部分,也是比较困难的一部分。本阶段的学习要熟悉Linux的内核机制、驱动程序与用户级应用程序的接口,掌握系统对设备的并发操作。熟悉所开发硬件的工作原理,具备ARM硬件接口的基础知识,熟悉ARM Cortex-A8处理器s5pv210各资源、掌握Linux设备驱动原理框架,熟悉工程中常见Linux高级字符设备、块设备、网络设备、USB设备等驱动开发,在工作中能独立胜任底层驱动开发。
F. 安卓开发和linux开发前景
安卓应用开发:企业级开发产品,通过java语言,熟练使用SDK按照企业的需要,为企业开发Android应用,开发难度较小。一般的培训机构培训几个月就可以上岗,后期发展前景小,不适合长期从事的行业。前期缺口大,不过后期缺口已经被补上了,目前这行业优势不明显。但是好处也明显,学习难度小,可以培训后很容易掌握的技能。
嵌入式软件方向的开发,这占社会需求的主要方面,主要从事嵌入式操作系统和应用软件的开发。完成嵌入式培训后,可以从事消费电子、安全安防、汽车电子、医疗电子、电信等行业的计算机应用设计开发岗位就业,担任嵌入式产品及应用系统的设计与开发工程师,从事嵌入式技术的应用项目设计开发、产品维护与技术服务等工作。
目前我国嵌入式开发的缺口很大,且技术难度相对较大,企业没办法通过短期培训获得需要的人才,所以刚行业会处于长期缺口的状态,行业前景好。但缺点也明显,学习成本大。
android简单,嵌入式难;
总结(两者比较而言):android好找工作,待遇目前可以,以后假如只是一般的程序员的话,待遇一般;嵌入式linux开发不好找工作,待遇好一些。
嵌入式这个行业肯定比很多行业有前途,但是一个人混的好不好,其实除了行业以外,个人能力占比更重。技术只是一门工具,嵌入式开发只能快速帮你积累原始资金,为你后期的规划铺路。所以以我在这行的经验,建议有兴趣的小伙伴来从事嵌入式开发工作岗位,但是要想入行还是得技术过关才是。
点击获取1V1嵌入式学习规划,现在还送100G精选学习资料。
点击找小助理0元领取
嵌入式的后续发展要比其他的要好很多,虽然行行出状元,但是嵌入式不仅就业范围广泛,而且职业生涯长,瓶颈期的到来较其他几种相比是要长很多的。随着经验增长薪资也在不断上涨,而薪资上限难以估计的现象。反观其他,上限工资基本在开始从事这个行业就知道。在嵌入式行业的道路上走多远走多高完全取决于你自己,从某种意义上来讲其实是一份十分有挑战的工作!从另一个角度来讲,嵌入式也是一份十分安稳的工作,因为你永远不用担心自己失业,因为这个行业不会消失,当然也就不用担心自己失业了。而且还会随着时间的增长获得更多的经验和薪资。
#include <stdio.h>
int main() {
printf("hello world!\n");
return 0;
G. 如何使用eclipse进行嵌入式Linux的开发
如何使用eclipse进行嵌入式Linux的开发 习惯了在windows环境下开发的程序员在转到Linux平台时经常会抱怨没有一个好用的集成开发环境。和windows下常用的一些开发软件相比,Linux自带的一些开发环境使用起来要么界面和操作不够方便、友好,要么功能不全。其实我们完全可以在开源社区上找到操作方便,功能强大的开发环境。下面就向大家介绍一个能在Linux上运行,界面和功能与windows上同类软件相似的开发平台eclipse。
eclipse是着名的跨平台的集成开发环境(IDE),最初是由IBM公司开发的替代商业软件Visual Age For Jave的下一代开发环境。2001年,IBM将eclipse贡献给开源社区,现在由eclipse基金会管理。2005年7月,eclipse稳定版3.1.0发布,目前最新的稳定版本是3.4。
eclipse本身只是一个框架平台,最初主要用于java语言的开发。但是众多插件的支持使得eclipse同样可以用来开发其他的语言,如c/c++、c#、perl、cobol的等等。cdt(c/c++ development toolkit)就是支持c/c++开发的插件。许多软件开发商也以eclipse为框架推出了自己的集成开发环境。由于eclipse平台用java实现,所以运行时需要jre(java runtime environment)的支持。下面我们以ubuntu(linux发行版的一种)为例,介绍如何在linux上使用 eclipse+cdt来进行嵌入式Linux应用程序的开发。
一、安装软件
在ubuntu下安装软件有两种方法:使用apt-get来自动安装或手动安装。用户使用自动安装非常方便,适合初学者。但是安装过程过于依赖资源网站的连接状况,可能需要耗费过多的时间。这里我们推荐手动安装的方式,花的时间比较短。
1、安装jdk
jdk(java development kit)即java开发包,其中包含了运行eclipse所需要的jre. ubuntu缺省安装的gnu版本的jre运行效率不高,所以我们需要安装sun公司的jre. 首先从sun的网站上(http://java.sun.com/javase/downloads/index.jsp)下载安装包jdk-6u7-linux-i586.bin,然后如下进行安装:
# mkdir -p /opt/java
# ./jdk-6u7-linux-i586.bin // 执行自解压文件,生成目录
# mv jdk1.6.0_07 /opt/java // 把目录移到/opt/java下
# cd /opt/java
# ln -s jdk1.6.0_07 jdk
# mv /etc/alternatives/java /etc/alternatives/java.gnu
# ln -s /opt/java/jdk/bin/java /etc/alternatives/java
# export JAVA_HOME=/opt/java/jdk // 设置环境变量
2、安装eclipse和cdt
从eclipse网站上(http://www.eclipse.org/)下载安装包eclipse-SDK-3.4-linux-gtk.tar.gz 和cdt-master-5.0.0.zip
# cd /opt
# tar zxvf eclipse-SDK-3.4-linux-gtk.tar.gz // 解压生成eclipse目录
# export PATH=/opt/eclipse:$PATH
# mkdir -p /opt/cdt
# cd /opt/cdt
# unzip cdt-master-5.0.0.zip
# cp -r plugins/* /opt/eclipse/plugins/
# cp -r features/* /opt/eclipse/features/
二、创建c/c++工程
假设我们已经在linux上安装好了arm交叉工具链,下面介绍如何创建、交叉编译和调试c/c++工程。为了更直观的说明,我们截取了相关的图片:
进入eclipse安装路径后,运行eclipse
eclipse运行界面
创建c 工程
使用缺省的Linux GCC工具链
进入c/c++ 界面
添加源代码文件1
添加源代码文件2
编辑代码
设置工程属性,指定交叉工具链1
设置工程属性,指定交叉工具链2
设置工程属性,指定交叉工具链3
编译工程
已生成arm平台可执行代码
配置调试选项
设置Debugger和 GDB debugger选项
设置连接类型为TCP,目标板的ip地址和调试端口号。端口号任意指定,通常大于1024(避免和系统所用端口号冲突)
在开发板上运行程序,格式如上图所示:gdbserver是交叉调试辅助程序;192.168.0.150是主机的ip地址;1234是调试端口号,和eclipse调试选项里设定的端口号要一致
点击Debug,进入调试界面
执行到断点
eclipse的调试界面和操作和在windows下开发类似,相信到了这一步,大家已经可以很方便来进行应用程序的开发了。
所需开发工具及环境
虚拟机Linux:Fedora 9
交叉编译工具:arm-linux-gcc-3.4.1.tar.bz2
集成开发工具:Eclipse(Linux安装包中自带的,安装Linux时选中安装)
安装ARM交叉编译器
1. 安装。其实很简单,就是将下载的arm-linux-gcc-3.4.1.tar.bz2解压到Linux根目录即可(因为解压后已经包含了/usr/local目录,所以要解压到根目录),如下命令:
tar -jxvf arm-linux-gcc-3.4.1.tar.bz2 -C /
解压后的目录如下图:
解压后的目录/usr/local/arm/3.4.1/
2. 设置环境变量。就是把交叉编译器的路径设置到系统环境变量里面去。
echo $PATH
查看现有的环境变量,显示如下图:
如果你只想临时添加交叉编译器的环境变量(注:临时添加的系统重启或注销后又没有了),只需在命令行输入如下命令:
export PATH=$PATH:/usr/local/arm/3.4.1/bin
添加后的环境变量如下图:(多了一个/usr/local/arm/3.4.1/bin)
如果你想这个环境变量永久的添加到系统的环境变量中,则你只需把这个命令添加到/root/.bashrc文件的最后一行即可(这个文件是隐藏文件,你要在文件浏览器中单击查看菜单,勾选显示隐藏文件才能看到)
3. 测试建立的交叉编译环境。新建一个c程序,文件名:test.c, 如下:
#include <stdio.h>
int main(void)
{
printf("Hellow world!\n");
return 0;
}
进行交叉编译,如下:
arm-linux-gcc -o test test.c
将交叉编译好的目标文件test下载到ARM开发板中并运行,如下:
./test
输出结果为:
Hellow world!
用集成开发工具Eclipse来开发嵌入式应用程序
双击Eclipse图标启动Eclipse
设置Eclipse的工作空间,就是选个目录,单击OK
启动后的主界面
开始新建一个应用程序工程
选择新建一个C工程,单击Next
给工程取个名字,这里我就叫test_app;然后选择工程类型,我选择了个Hellow world C工程模版,单击Next
填写作者、版权等信息,单击Next
没什么选的,点击Finish
单击Yes
新建好的项目工程
展开左边的源代码目录,双击打开主函数。这里只是输出一句"Hello World!!!",你可以做一些其他复杂的应用
单击Project菜单,去掉Build Automatically的勾选,因为勾选的话,每次修改一个地方工程都会自动进行编译
打开工程的属性对话框进行编译选项的设置
我们的应用程序最终要到嵌入式arm上运行,这里就要把gcc改成arm-linux-gcc编译器,当然前提是你要在你的开发主机上先安装arm-linux-gcc
C连接器也要改成arm-linux-gcc
这里的Libraries是设置你的应用程序中用到的库文件,比如应用程序中用到了线程类,则这里在上面添加pthread这个库,下面就添加这个库的路径。如果应用程序没用到任何库文件就不用管了
选中左侧的工程名,右键,在弹出的菜单中选择Build Project编译工程
编译好后的工程,目标文件在Debug目录下
结束语
建立交叉编译环境是开发嵌入式程序的第一步,编译器版本也有很多,这里就介绍用的较多的一种。而Eclipse则是本人认为开发嵌入式应用程序最为方便的集成开发工具,他不仅让整个工程清晰可见,更重要的是他不需要你去为整个工程编写复杂的Makefile文件,他会为你自动生成Makefile。
ubuntu上安装arm交叉编译环境arm-linux-gcc
首先下载 arm-linux-gcc-4.3.2.tgz,这个就不多说了,重点介绍一下怎么安装。将 arm-linux-gcc-4.3.2.tgz 文件拷贝到 Ubuntu 的主文件夹下,在 Ubuntu 中新建一个终端,以root用户运行,输入下面的命令安装交叉编译器:
#tar zxvf arm-linux-gcc-4.3.2.tgz
解压后会产usr文件夹,将这个目录下的usr/local/arm的arm文件夹复制到文件系统的usr/local目录下,命令为
#mv usr/local/arm usr/local
然后把交叉编译器路径添加到系统环境变量中,
在终端中执行:
gedit /etc/profile
添加以下四行到该文件中:
export PATH=/usr/local/arm/4.3.2/bin:$PATH
export TOOLCHAIN=/usr/local/arm/4.3.2
export TB_CC_PREFIX=arm-linux-
export PKG_CONFIG_PREFIX=$TOOLCHAIN/arm-none-linux-gnueabi
H. 谁能给我说一下嵌入式Linux的开发流程包括哪些步骤请详细介绍,谢谢了
嵌入式Linux开发流程
在一个嵌入式系统中使用Linux开发,根据应用需求的不同有不同的配置开发方法,但是一般都要经过如下的过程:
1.建立开发环境
操作系统一般使用RedHat-Linux,版本从7到9都可以,选择定制安装或全部安装,通过网络下载相应的GCC交叉编译器进行安装(例如arm-Linux-gcc、arm-μclibc-gcc),或者安装产品厂家提供的交叉编译器。
2.配置开发主机
配置MINICOM,一般的参数为波特率为115 200bps,数据位为8位,停止位为1,无奇偶校验,软件硬件流控设为无。在Windows下的超级终端的配置也是这样的。MINICOM软件的作用是作为调试嵌入式开发板的信息输出的监视器和键盘输入的工具。配置网络,主要是配置NFS网络文件系统,需要关闭防火墙,简化嵌入式网络调试环境设置过程。
3.建立引导装载程序BOOTLOADER
从网络上下载一些公开源代码的BOOTLOADER,如U-BOOT、BLOB、VIVI、LILO、ARM-BOOT、RED-BOOT等,根据自己具体的芯片进行移植修改。有些芯片没有内置引导装载程序,例如三星的ARM7、ARM9系列芯片,这样就需要编写开发板上Flash的烧写程序,网络上有免费下载的Windows下通过JTAG并口简易仿真器烧写ARM外围Flash芯片的烧写程序,也有Linux下的公开源代码的J-Flash程序。如果不能烧写自己的开发板,就需要根据自己的具体电路进行源代码修改。这是系统正常运行的第一步。如果购买了厂家的仿真器当然比较容易烧写Flash,这对于需要迅速开发自己产品的人来说可以极大地提高开发速度,但是其中的核心技术是无法了解的。
4.下载别人已经移植好的Linux操作系统
如μCLinux、ARM-Linux、PPC-Linux等,如果有专门针对所使用的CPU移植好的Linux操作系统那是再好不过的,下载后再添加自己的特定硬件的驱动程序,进行调试修改,对于带MMU的CPU可以使用模块方式调试驱动,对于μCLinux这样的系统则需编译进内核进行调试。
5.建立根文件系统
从www.busybox.net下载使用BUSYBOX软件进行功能裁减,产生一个最基本的根文件系统,再根据自己的应用需要添加其他程序。默认的启动脚本一般都不会符合应用的需要,所以就要修改根文件系统中的启动脚本,它的存放位置位于/etc目录下,包括:/etc/init.d/rc.S、/etc/profile、/etc/.profile等,自动挂装文件系统的配置文件/etc/fstab,具体情况会随系统不同而不同。根文件系统在嵌入式系统中一般设为只读,需要使用mkcramfs、genromfs等工具产生烧写映像文件。
6.建立应用程序的Flash磁盘分区
一般使用JFFS2或YAFFS文件系统,这需要在内核中提供这些文件系统的驱动,有的系统使用一个线性Flash(NOR型)512KB~32MB,有的系统使用非线性Flash(NAND型)8~512MB,有的两个同时使用,需要根据应用规划Flash的分区方案。
7.开发应用程序
应用程序可以放入根文件系统中,也可以放入YAFFS、JFFS2文件系统中,有的应用不使用根文件系统,直接将应用程序和内核设计在一起,这有点类似于μCOS-II的方式。
8.烧写内核、根文件系统、应用程序
9.发布产品
I. linux平台应用程序开发环境有哪些
1.大多数Linux发放版本,自身捆绑了诸如Java、Gcc、Perl、Python等常用开发工具。
2.Windows环境的快速开发工具(RAD),像Borland的C++ Builder、Delphi等可视化开发环境,通过简单的用户界面设计、方便的拖拽式开发,促成了Windows平台应用软件的极大丰富。
3.Kylix2还是将Delphi从Windows搬到了Linux,C++Builder及Delphi程序语言,为Linux平台开发者提供了一个快速开发电子商务应用的解决方案。据称,无论是建立图形用户界面、数据库或是Web及Web Services应用程序,Kylix3都将带来更快速、更简单的使用经验。
4.ylix3具有Windows 平台下C++ Builder程序开发人员熟悉的工作界面,并同时支持ANSI/ISO C++标准,
5.由Kylix 3开发的基于Linux的应用程序,将其源代码经C++Builder或Delphi重新编译之后即可在Windows环境下顺利执行,在Windows平台经过编译后,可供MS IIS、Apache、Netscape等不同Web服务器使用。
6.可视化C++编译环境和组件式的开发方式,使原本对Linux平台不熟悉的开发者,也能够顺利进行开发