掌握Linux编程的10个步骤
做linux c语言开发有一小阵子了,在这边自己总结了些心得,相信能让不懂得Linux编程的人慢慢步入Linux殿堂。有任何不对或不准确之处欢迎讨论。
1. 安装 linux 操作系统
既然要学习linux下的c语言开发,那么安装个linux操作系统是必须的。建议安装Ubuntu,这是我目前见过界面最友好的linux操作系统了。关于如何使用Ubuntu以及在其上作开发,可参考我的另外一篇敝作《Ubuntu使用心得》:http://download.csdn.net/source/2206289
2. 熟悉 linux 操作系统下的命令
Linux提供了大量的命令,利用它可以有效地完成大量的工作,如磁盘操作、文件存取、目录操作、进程管理、文件权限设定等。所以,在Linux系统上工作离不开使用系统提供的命令。要想真正理解Linux系统,就必须从Linux命令学起,通过基础的命令学习可以进一步理解Linux系统。
关于linux下的命令,欢迎参考我blog上一篇文章《Linux命令整理》:http://blog.csdn.net/sikinzen/archive/2010/04/19/5503769.aspx
3. 学会一种源码编辑器
很多大牛推荐使用 vim/emacs之类的工具,但我还是用着不习惯,应该是我能力未到。我个人比较喜欢的开发方式是:在windows下编辑代码,在linux下编译。
我自己非常喜欢用SourceInsight来编辑代码,这个工具的使用可参考我blog上一篇文章《Source Insight的应用技巧、宏功能》:http://blog.csdn.net/sikinzen/archive/2010/04/09/5468511.aspx
4. 掌握gcc和gdb
掌握gcc的基本用法,并且会用gdb来调试程序。
5. 用好 C 语言
工作中发现:C语言大家都会,但核心思想就不一定都能理会。我自己觉得也只是摸到了门径,还需要实践锻炼。
推荐:《C陷阱与缺陷》、《C专家编程》、《C程序设计语言》。
6. 学会写makefile,以及用它来组织源码
当项目大了后,用命令行逐个逐个编译、link文件的工作量是非常恐怖的,这时候make就起作用,即使是很小的项目,我认为也应该采用make组织。
关于makefile,请参考网上文章《跟我一起写Makefile》或《GNU make中文手册》。这两篇文章都相当得好。
7. Linux应用编程
终于说到正题了,呵呵。
Linux上的应用编程基本上两本书就搞定了:《APUE》和《UNP》,前者锻炼基本功,后者学习网络编程。
这边我直接引用网上某位先生的评论:
如果想学习UNIX/LINUX的编程,《APUE》绝对经典的教材,加深一下功底,学习《UNP》的第二卷。这样基本上系统方面的就可以掌握了。 然后再看Douglus E. Comer的《用TCP/IP进行网际互
相关文档:
[经过安装测试成功的方法from CYBEND ]
第一步:系统与软件的准备
系统版本 redhat enterprise linux 5 ,内核版本 2.6.18
第二步:软件包的准备
httpd软件包:httpd-2.2.8.tar.bz2
mysql软件包从mysql官方网站下载,我选用的是ehel5的rpm包
MySQL-server-community-5.0.51a-0.rhel5.i386.rpm
MySQL-client-community ......
这一节我们来看看其他线程函数:
int pthread_tryjoin_np(pthread_t thread_handle, void ** thread_return);
int pthread_timedjoin_np (pthread_t thread_handle, void **thread_return, __const struct timespec *abstime);
pthread_tryjoin_np会可以用来判断thread_handle指向的线程是否已经中止,如果没有则*thre ......
这里继续上一篇关于线程函数的介绍:
int pthread_detach (pthread_t thread_handle);
这个函数的作用是让thread_handle指向的目标线程在中止的时候清理自己拥有的数据。在这个函数调用之后,
不能再对thread_handle使用pthread_join。
显而易见的是,如果我们没有对新创建的线程调用pthread_detach,这个线 ......
软实时和硬实时,软实时是说违反了程序执行的deadline也不会有致命的错误,而硬实时的deadline是写死的。
很多linux有硬实时的补丁,如MontaVista。
有源晶振和无源晶振,有源的叫osllicator,无源的叫crystal。
uclinux是静态编译的,没有mmu机制。
x86的要选xterm...
serveu假设服务器 + linux用sftp(通过ssh ......
本文将描述线程的一个比较重要的一方面:线程私有数据,如下代码:
#include <pthread.h>
#include <unistd.h>
#include <stdio.h>
pthread_key_t kKey = 0;
void * ThreadProc(void* arg)
{
char* a = (char*)(arg);
sleep(2);
pthread_setspecific(kKey, a);
......