1.在Linux下做开发 要学习Linux哪些东西

2.linux嵌入式开发是不是必须用linux才能开发?

3.基于Linux内核开发系统发行时有版权问题吗?

4.Linux开发需要什么呢需要具备什么基础呢

在Linux下做开发 要学习Linux哪些东西

linux电脑系统开发-linux系统软件开发的步骤

嵌入式Linux要学哪些?一些人总在寻思,怕走了弯路,又怕学的东西离企业需求远。那么今天就请华清远见高级讲师曹大神告诉你,9点浅析嵌入式学习步骤。下面是他本人亲笔。

1、要学习Linux,首先要会用,如果不会用怎么知道怎么知道怎么去做,所以需要学习Linux系统的安装及使用。

2、学会用Linux了,那么我们就要做一些Linux下的开发了,开发什么呢?看到网上有很多很强大很有趣的程序,我们都可以尝试去做,可是如何去做呢,程序是什么呢,怎么写呢?这时我们需要学习一些语言,比如比较基础的C语言,比如面向对象的C++,Java等。

3、写完程序了发现不就是一个很普通的文件吗,怎么能像别人写的程序一样运行起来呢? 这时我们需要知道如何编译一个程序,需要知道编译器及一些其他工具的使用,比如GCC,在开发的过程中我们为了提供工作效率还会用到Make,Shell等,为了能够很好的管理我们代码的不同版本,我们还需要知道什么是SVC,CVS,subversion,Git等。

4、当我们开始写一些比较大的程序,不再是以往的hello world级别的了,这时我们发现我们考虑的更多了,我们考虑到了程序的效率,我们发现需要读写文件了,我们发现需要和另外一台电脑通信了,于是我们有需要学习一些更高级点的东西了,比如数据结构,比如文件IO,比如多进程多线程编程,比如网络通信,这时我们会接触很多新的名词,什么是树,图...,什么是文件io什么是标准IO,什么是进程线程,什么是TCP/IP...。

5、当我们再进一步的话,我们会发现我们什么有很多的东西都运行的是Linux系统,可是他们和我的PC运行的Linux有什么区别呢,为什么我电脑要用风扇而手机不用风扇呢,我们打开网页查找手机的详细参数的时候,会看到Cortex-A15 、四核 、ARM等等字眼,什么是ARM,什么是Cortex-A15,我们需要进一步的了解。

6、了解完ARM之后,很多人就回去购买一些开发板,去学习它,这时操作系统的移植又成了一个比较重要的内容了,什么是bootloader,什么是kernel,什么是rootfs等等,我们怎么做呢。

7、花了很长时间系统做好了,发现板子上很多的什么不能用,怎么办呢? 这时我们需要写一些驱动来驱动这些设备,这时我们需要知道,什么是字符设备驱动、块设备驱动、网络设备驱动,为了更好的写驱动我们需要了解更多的硬件相关的东西,我们需要看懂芯片手册,我们需要看懂原理图,只有我们懂我们的设备,才能更好的驱动它。

8、等等,这里就列举更多的内容了,因为还有很多。

9、这些都有了我们就可以自行开发我们自己的产品了。

嵌入式Linux要学哪些?上述9点基本很明了了。这也算是嵌入式学习的一个基本步骤。本人认为到第九点你已经是一个高级的嵌入式Linux人物了,工资待遇我已经不用说,咋说也得15K往上了,如果做管理30K也是有的。这些东西要靠自学,说实话不太现实,嵌入式入门门槛相对高,要有心里准备,参加培训班是有必要的,除非你有亲戚朋友手把手教你。引用一句老话:“师傅领进门,修行是靠个人!”自己必须得喜欢钻研与学习,只有付出才会有收获!

最后说一点,Android系统也是在linux系统基础上开发的,所以学嵌入式linux的朋友,将来不仅可以从事嵌入式开发的工作(嵌入式的应用领域非常广泛,永不过时!)还可以从事android开发方向的工作(轻松迈入),从职业发展来说,嵌入式linux也是程序员最具发展前景的技术首选。

23

linux嵌入式开发是不是必须用linux才能开发?

不一定。尽管Linux嵌入式开发通常使用Linux操作系统进行开发,但并不是必须如此。嵌入式开发的关键是在嵌入式系统上运行的软件,而不是开发工具所在的操作系统。

嵌入式开发可以采用多种操作系统,包括但不限于:

1.Linux:Linux是一种常见的选择,因为它是开源的,具有强大的社区支持和广泛的开发工具。很多嵌入式系统采用Linux内核。

2.FreeRTOS:FreeRTOS是一个小型、实时操作系统,适用于资源有限的嵌入式系统。

3.WindowsEmbedded:一些嵌入式系统使用WindowsEmbedded系列操作系统。

4.RTEMS:RTEMS是一个实时操作系统,特别适用于嵌入式系统的实时需求。

选择哪个操作系统取决于项目的需求、硬件平台和开发人员的偏好。因此,如果项目要求使用Linux嵌入式系统,那么开发可以在Linux操作系统上进行,但并不是唯一的选择。

嵌入式开发还可以使用交叉编译工具链,使得在一台操作系统上开发,然后将生成的可执行文件在目标嵌入式系统上运行成为可能。

以上内容是由猪八戒网精心整理,希望对您有所帮助。

基于Linux内核开发系统发行时有版权问题吗?

当然有。

Linux 内核本身就是 GPL 的,GPL 协议本身就是版权所有而不是无版权的。

举个例子:现在所有的 Android 手机和平板电脑基于 GPL 协议本身的版权所有规则,必须依照 GPL 协议规则执行。也就是必须向用户提供内核源代码。不过 Android 除了内核外,都是 APL 的,反而不需要提供源代码(但需要说明专利权)。所以现在国内的按卓平板基本都是有版权无能题的,因为他们没有履行 GPL 协议。

但如果你的系统里面混杂了其他的 LGPL ,GPL 或者别的源代码、功能函数库。那么你的这个系统就要考虑“GPL 传染"的问题。相对来说,内核只对驱动模块传染。在 Linux 内核上面运行的程序不受 GPL 影响。

GPL 的 Linux 内核是有版权的,版权附加的要求主要是你使用就要遵守 GPL 。GPL 协议是基于版权所有才能实现的。

不过话又说回来,在国内讨论版权问题是不是有点“多余”呢?

Linux开发需要什么呢需要具备什么基础呢

一、linux和os:

1、命令:netstat tcpdump ipcs ipcrm 这四个命令的熟练掌握程度基本上能体现实际开发和调试程序的经验

2、cpu 内存 硬盘 等等与系统性能调试相关的命令必须熟练掌握,设置修改权限 tcp网络状态查看 各进程状态 抓包相关等相关命令 必须熟练掌握

3、awk sed需掌握

4、共享内存的使用实现原理、然后共享内存段被映射进进程空间之后,存在于进程空间的什么位置?共享内存段最大限制是多少?

5、c++进程内存空间分布(注意各部分的内存地址谁高谁低,注意栈从高道低分配,堆从低到高分配)

6、ELF是什么?其大小与程序中全局变量的是否初始化有什么关系(注意.bss段)

7、使用过哪些进程间通讯机制,并详细说明

8、makefile编写,虽然比较基础,但是会被问到

9、gdb调试相关的经验,会被问到

10、如何定位内存泄露?

11、动态链接和静态链接的区别

12、32位系统一个进程最多多少堆内存

13、多线程和多进程的区别(重点 必须从cpu调度,上下文切换,数据共享,多核cup利用率,资源占用,等等各方面回答,然后有一个问题必须会被问到:哪些东西是一个线程私有的?答案中必须包含寄存器,否则悲催)

14、写一个c程序辨别系统是64位 or 32位

15、写一个c程序辨别系统是大端or小端字节序

16、信号:列出常见的信号,信号怎么处理?

17、i++是否原子操作?并解释为什么

18、说出你所知道的各类linux系统的各类同步机制(重点),什么是锁?如何避免锁(每个技术面试官必问)

19、列举说明linux系统的各类异步机制

20、exit() _exit()的区别?

21、如何实现守护进程?

22、linux的内存管理机制是什么?

23、linux的任务调度机制是什么?

24、标准库函数和系统调用的区别?

25、补充一个问题:系统如何将一个信号通知到进程?

二、c语言:

1、宏定义和展开(必须精通)

2、位操作(必须精通)

3、指针操作和计算(必须精通)

4、内存分配(必须精通)

5、各类库函数必须非常熟练的实现

6、哪些库函数属于高危函数,为什么?(strcpy等等)

三、c++:

1、一个String类的完整实现必须很快速写出来(注意:赋值构造,operator=是关键)

2、虚函数的作用和实现原理(必问必考,实现原理必须很熟)

3、sizeof一个类求大小(注意成员变量,函数,虚函数,继承等等对大小的影响)

4、指针和引用的区别(一般都会问到)

5、多重类构造和析构的顺序

6、stl各容器的实现原理(必考)

7、extern c 是干啥的,(必须将编译器的函数名修饰的机制解答的很透彻)

8、volatile是干啥用的,(必须将cpu的寄存器缓存机制回答的很透彻)

9、static const等等的用法,(能说出越多越好)

四、数据结构或者算法:

1、《离散数学》范围内的一切问题皆由可能被深入问到(最重要,最体现功底,最能加分,特别是各类树结构的实现和应用)

2、各类排序:大根堆的实现,快排(如何避免最糟糕的状态?),bitmap的运用等等

3、hash, 任何一个技术面试官必问(例如为什么一般hashtable的桶数会取一个素数?如何有效避免hash结果值的碰撞)

五、网络编程:

1、tcp与udp的区别(必问)

2、udp调用connect有什么作用?

3、tcp连接中时序图,状态图,必须非常非常熟练

4、socket服务端的实现,select和epoll的区别(必问)

5、epoll哪些触发模式,有啥区别?(必须非常详尽的解释水平触发和边缘触发的区别,以及边缘触发在编程中要做哪些更多的确认)

6、大规模连接上来,并发模型怎么设计

7、tcp结束连接怎么握手,time_wait状态是什么,为什么会有time_wait状态?哪一方会有time_wait状态,如何避免time_wait状态占用资源(必须回答的详细)

8、tcp头多少字节?哪些字段?(必问)

9、什么是滑动窗口(必问)

10、connect会阻塞,怎么解决?(必考必问,提示:设置非阻塞,返回之后用select检测状态)

11、如果select返回可读,结果只读到0字节,什么情况?

12、keepalive 是什么东东?如何使用?

13、列举你所知道的tcp选项,并说明其作用。

14、socket什么情况下可读?

六、db:

1、mysql,会考sql语言,服务器数据库大规模数据怎么设计,db各种性能指标