从事linux 下c开发,要学哪些知识?推荐一下每个学习阶段的书籍,越详细越好。

kuaidi.ping-jia.net  作者:佚名   更新日期:2024-07-08
想从事linux下c++开发,需要学哪些知识?帮忙推荐每个学习阶段的一些书籍,越详细越好。

《21天学会C++》
或者
《C++ Primer 》
《 C++编程规范》作者 : Herb Sutter/Andrei Alexandrescu
《Exceptional C++ Style中文版》 作者 : Herb Sutter
《C++面向对象程序设计》萨维奇 (Walter Savitch) / 周靖 / 清华大学出版社
《C++ : The Complete Reference 》Herbert Schildt / Osborne/McGraw-Hill
《C++沉思录》(美)凯尼格,(美)莫欧 著,黄晓春
《Effective C++:改善程序与设计的55个具体做法》(美)梅耶 著,侯捷 译

《More Effective C++:35个改善编程与设计的有效方法》(美)梅耶 著,侯捷
《零起点学通C++》范磊 编著







一、Linux操作系统
二、Linux C++开发环境搭建、开发工具的使用
三、C++语言
四、C++ Boost模板库
五、ACE框架
六、数据库开发
七、软件工程
unix 高级编程、系统编程灯书籍

一:C语言 嵌入式Linux工程师的学习需要具备一定的C语言基础,C语言是嵌入式领域最重要也是最主要的编程语言,通过大量编程实例重点理解C语言的基础编程以及高级编程知识。包括:基本数据类型、数组、指针、结构体、链表、文件操作、队列、栈等。
二:Linux基础 Linux操作系统的概念、安装方法,详细了解Linux下的目录结构、基本命令、编辑器VI ,编译器GCC,调试器GDB和 Make 项目管理工具, Shell Makefile脚本编写等知识,嵌入式开发环境的搭建。
三:Linux系统编程 重点学习标准I/O库,Linux多任务编程中的多进程和多线程,以及进程间通信(pipe、FIFO、消息队列、共享内存、signal、信号量等),同步与互斥对共享资源访问控制等重要知识,主要提升对Linux应用开发的理解和代码调试的能力。
四:Linux网络编程 计算机网络在嵌入式Linux系统应用开发过程中使用非常广泛,通过Linux网络发展、TCP/IP协议、socket编程、TCP网络编程、UDP网络编程、Web编程开发等方面入手,全面了解Linux网络应用程序开发。重点学习网络编程相关API,熟练掌握TCP协议服务器的编程方法和并发服务器的实现,了解HTTP协议及其实现方法,熟悉UDP广播、多播的原理及编程方法,掌握混合C/S架构网络通信系统的设计,熟悉HTML,Javascript等Web编程技术及实现方法。
五:数据结构与算法 数据结构及算法在嵌入式底层驱动、通信协议、及各种引擎开发中会得到大量应用,对其掌握的好坏直接影响程序的效率、简洁及健壮性。此阶段的学习要重点理解数据结构与算法的基础内容,包括顺序表、链表、队列、栈、树、图、哈希表、各种查找排序算法等应用及其C语言实现过程。
六:C++ 、QT C++是Linux应用开发主要语言之一,本阶段重点掌握面向对象编程的基本思想以及C++的重要内容。图形界面编程是嵌入式开发中非常重要的一个环节。由于QT具有跨平台、面向对象、丰富API、支持2D/3D渲染、支持XML、多国语等强大功能,在嵌入式领域的GUI开发中得到了广范的应用,在本阶段通过基于QT图形库的学习使学员可以熟练编写GUI程序,并移植QT应用程序到Cortex-A8平台。包括IDE使用、QT部件及布局管理器、信息与槽机制的应用、鼠标、键盘及绘图事件处理及文件处理的应用。
七:Cortex A8 、Linux 平台开发 通过基于ARM Cortex-A8处理s5pv210了解芯片手册的基本阅读技巧,掌握s5pv210系统资源、时钟控制器、电源管理、异常中断控制器、nand flash控制器等模块,为底层平台搭建做好准备。Linux平台包括内核裁减、内核移植、交叉编译、GNU工具使用、内核调试、Bootloader介绍、制作与原理分析、根文件系统制作以及向内核中添加自己的模块,并在s5pv210实验平台上运行自己制作的Linux系统,集成部署Linux系统整个流程。同时了解Android操作系统开发流程。Android系统是基于Linux平台的开源操作系统,该平台由操作系统、中间件、用户界面和应用软件组成,是首个为移动终端打造的真正开放和完整的移动软件,目前它的应用不再局限于移动终端,还包括数据电视、机顶盒、PDA等消费类电子产品。
八:驱动开发 驱动程序设计是嵌入式Linux开发工作中重要的一部分,也是比较困难的一部分。本阶段的学习要熟悉Linux的内核机制、驱动程序与用户级应用程序的接口,掌握系统对设备的并发操作。熟悉所开发硬件的工作原理,具备ARM硬件接口的基础知识,熟悉ARM Cortex-A8处理器s5pv210各资源、掌握Linux设备驱动原理框架,熟悉工程中常见Linux高级字符设备、块设备、网络设备、USB设备等驱动开发,在工作中能独立胜任底层驱动开发。
以上就是列出的关于一名合格嵌入式Linux开发工程师所必学的理论知识,其实,作为一个嵌入式开发人员,专业知识和项目经验同样重要,所以在我们的理论学习中也要有一定的项目实践,锻炼自己的项目开发能力。

想要把C开发学好,最有效的方法,是从用linux系统开始,安装linux或者linux虚拟机,边用边学。这里推荐一本极好的书《鸟哥liunx私房菜》,通俗易懂,真的很不错!
然后就是C开发,分为两大块:底层与应用!
C开发相对服务器管理较为深奥的,需要长时间的积累,还要了解硬件知识,操作系统的基本原理,Makefile语法等。建议从驱动程序入手,因为驱动程序是linux内核中模块化比较强的部分,相对易于理解,而且链接软件与硬件,能够从整体来学习。
这方面有很多经典书籍,其中入门比较好的有:
《嵌入式Linux应用开发完全手册》 韦东山著

内核与驱动编程类: 《linux设备驱动开发详解》 宋宝华著
《linux内核设计与实现》 Robert Love著 (学内核最好读物)
linux应用编程类: 《Unix环境高级编程》 (被誉为“圣经”)
《linux程序设计》
建议先看应用编程类,因为不涉及底层的内容,相对容易理解。等到这几本书消化的差不多了,就开始看经典之作《linux设备驱动程序》和《深入理解linux内核了》,这两本书非常权威,我也都看过,觉得讲的确实比其他书籍更细节,更准确。
这些基本可以说是最好的学习linux的书籍,只要循序渐进的看书,实践,一定会有效果的。

应用开发工程师 驱动工程师 内核工程师 硬件工程师 测试工程师 采购工程师 产品质量工程师......

c程序设计(K&R)、vim&emacs、 shell编程、Linux程序设计、操作系统原理 、体系结构 、编译原理 、链接与加载、 汇编语言、 arm体系结构、 unix高级环境编程、 C++ prime、 thinking in C++、 thinking in java、离散数学、概率论、算法导论、unix网络编程卷2、 tcp/ip 协议、 LKD 、ULK 、LDD、 SUS 、情景分析 、深入理解linux内核架构、网际协议卷1-2-3、模拟电路、数字电路、信号与接口、C51单片机、contex-A8 处理器、linux kernel in nutshoot、嵌入式系统构建、Makefile、GNU autotools工具链、GCC编译器、Libc、Crosstool、Busybox、bootloader、Cache、Buffer、MMU、DMA、BUS Clock、interrupt(UART、IIC、SPI、PCI、USB、LCD、DDR、SDIO、PHY...)控制器以及规范、DSP

我今年刚毕业,现在从事linux C开发,我给你说下我们公司的情况吧!
大概可以分两种,应用开发和底层开发。
应用的话和Linux相关的就是你编程时经常用到的系统函数,再就是很多协议的实现已经有了基于linux的开源代码,然后就和linux没多少关系了,当然肯定要求你对Linux系统一些基本理论要有了解。更多的是业务上的了,跟各个公司所处的行业相关,需要了解跟这个行业相关的一些协议了。

如果做底层开发,就和Linux有很大关系了。和系统启动器(REDBOOT/UBOOT)、内核、文件系统、驱动这几方面都有关系。大一点的公司分工明确,做内核就是内核,做驱动就是驱动,但小公司往往要求员工要多会一些东西。而且牛叉的架构师必须对各个方面都有了解。
所以单单应用开发可以看下《linux程序设计》《UNIX环境高级编程》《UNIX网络编程》。
如果是底层的话,可以先看《嵌入式Linux应用开发完全手册》入门,入门后我也不知道该怎么学了。
希望能帮到你,我有《嵌入式Linux应用开发完全手册》的PDF,luoops@sina.cn如果需要email我!

推荐几本关于Linux和arm的书:
※※S3C2410完全开发流程,Linux系统移植,makefile-中文教程,Linux设备驱动程序第三版,Linux-c函数库参考手册。
※※开发所涉及到的基础课程
Uart实验,SPI实验等一些总线实验。涉及:接口技术(计算机组成)
ADC实验,涉及:模拟电路,数字电路。
网络实验:涉及:计算机网络,操作系统原理。
RTOS实验: 涉及:操作系统原理。
中断实验:涉及:接口技术(计算机组成)
LED按键实验 涉及:接口技术,数字电路。
对于C语言,数据结构,汇编语言等课程却是各个实验都会涉及的。