linux下c 编程(怎么在ubuntu编写c程序)
linux与c语言的关系linux与c语言
linux和c语言有什么区别?
C语言和Linux基本上没有什么区别。
我们意义上的C语言,是标准ANSIC,是任何C编译器都应该遵循的C语言协议。
而Linux其实特指的是Linux上的GCC编译器,GCC编译器完全遵循ANSIC,并在此基础上又做了一些扩展,例如:
1)对ASM语法的支持
2)编译器支持内联函数
3)支持__attribute__机制
linux下的c语言编程和windows下的c语言编程有什么区别?
语言本身差别不大。
主要主要是和系统交互的时候不同。一个是Linux的POSIX接口,一个是Windows的Win32API。Linux下的接口因为源自UNIX,有很多API明显是C库的风格,风格比较老旧。但是Win32API风格更现代、更高级一些。比如Linux下fork/exec、Windows下CreateProcess。而且Windows的API提供很多图形界面的相关功能,比如支持窗口间操作。Linux下需要单独的GUI库比如GTK+等等。
linux语言和c语言比哪个难度大?
学会linux比学会C语言要容易很多。
但是必须指出的是linux是操作系统,而c语言是编程语言。他们两个是不一样的东西。C语言可以在linux下面使用,各个版本的linux都支持C语言,并且都自带了C语言的编译程序。只需要学会简单的linux操作,就可以使用C语言编程了。相对来说,学会linux比学C语言要简单很多。
linux怎么运行c语言代码?
在linux下运行C语言代码是比较简单的事情。C语言代码不能直接运行的,你首先必须编译链接,之后生成一个可执行的文件,再运行这个文件。
要编译C语言的代码,在命令行输入编译指令链接,你要用到的库文件或者一些参数,这样运行完之后就自动生成可执行文件了。
linux系统c语言是免费的吗?
linux系统c语言是开源的,不是免费的,概念不一样。
linux下的C语言编程需要什么
一、工具的使用
1、学会使用vim/emacs,vim/emacs是linux下最常用的源码编辑具,不光要学会用它们编辑源码,还要学会用它们进行查找、定位、替换等。新手的话推荐使用vim,这也是我目前使用的文本编辑器。
2、学会makefile文件的编写规则,并结合使用工具aclocal、autoconf和automake生成makefile文件。
3、掌握gcc和gdb的基本用法。掌握gcc的用法对于构建一个软件包很有益处,当软件包包含的文件比较多的时候,你还能用gcc把它手动编译出来,你就会对软件包中各个文件间的依赖关系有一个清晰的了解。
4、掌握svn/cvs的基本用法。这是linux,也是开源社区最常用的版本管理系统。可以去试着参加sourceforge上的一些开源项目。
二、linux/unix系统调用与标准C库
系统调用应用软件与操作系统的接口,其重要性自然不用说,一定要掌握。推荐学习资料为steven先生的UNIX环境高级编程(简称APUE)。
三、库的学习
无论是在哪个平台做软件开发,对于库的学习都很重要,linux下的开发库很多,我主要介绍一下我常常用到的一些库。
1、glib库
glib库是gtk+和gnome的基础库,并具是跨平台的,在linux、unix和windows下都可以用。glib库对于linux平台开发的影响就像 MFC对windows平台开发的影响一样,很多开源项目都大量的使用了glib库,包括gimp、gnome、gaim、evolution和 linux下的集群软件heartbeat.因为glib库自带有基本的数据结构实现,所以在学习glib库的时候可以顺便学习一下基本的数据结构(包括链表、树、队列和hash表)。
2、libxml库
libxml是linux平台下解析XML文件的一个基础库,现在很多实用软件都用XML格式的配置文件,所以也有必要学习一下。
3、readline库
readline库是bash shell用的库,如果要开发命令行程序,那么使用readline库可以减少很多工作量,比如bash里的命令行自动补全,在readline里就已经有实现,当然你也可以用自己的实现替代库的行为。readline库有很多网站介绍的,只要google一下readline就可以找到一堆了。
4、curses库
curses库以前是vi程序的一部分,后来从vi里提取出来成为一个独立的库。curses库对于编写终端相关的程序特别有用,比如要在终端某一行某一列定位输出,改变终端字体的颜色和终端模式。linux下的curses库用的是GNU实现的ncurses(new curses的意思)。
5、gtk+和KDE库
这两个库是开发GUI应用程序的基础库,现在linux下的大部份GUI程序都是基于这两个库开发的,对于它们的学习也是很有必要的。
四、网络的学习
关于Linux下的C/c++编程
就目前我所了解的和现在正在开发的具体开发有:服务器(网络方向)、pos机(网络+数据库)、KTV点唱系统、应急系统等。其实这些在其他系统上做也可以,只不过由于linux的开源和免费,并且可裁剪,所以很多厂商喜欢在linux平台上进行开发。
建议你先学会C/C++这门语言,无论在windows平台上学还是在linux上学都是一样的。
建议你先在windows平台上学。当你学会了这个语言之后,假如你想往linux方向发展的话,你还得先学会使用linux系统的一些常见操作,尤其是要学会linux的一些常见的命令操作,还有如何在linux上编辑文件,如何使用CRT等一些常用的远程登录linux软件等开发工具。
当学会了常见的命令操作之后,你就可以在linux平台上开始编写你的C/C++语言代码了,这时的编写代码和windows上编写的代码没有多大的区别,只是有一些头文件需要替换一下就可以了。
接着学会如何使用gcc/g++编译工具、gdb调试工具(到后期熟练了之后还需要掌握make工具),这样就可以编译调试自己写出的程序了。
另外,以上的学习步骤都是基本在围绕如何在已经搭建好的linux平台上进一步开发应用程序的。
其实学习linux最难的一个是,学习linux的内核机制。如果你学会了之后,达到可以随心所欲的裁剪、改变它,可以为自己“量身定制”一个系统,这个时候你就成功了,这时的你年薪估计至少有十几二十万。但是这个入门很难,也需要很大的耐力去啃食相关方面的知识和代码(本人曾经尝试看过,但是最终放弃了,因为实在是太博大精深了,又出来工作了,下班后也挺累的,就放弃了。我估计得连续看个几年才能有点头绪吧)
另外,建议不是电子专业的还是最好不要往底层方向走,因为和我一个数学专业的同学一起搞嵌入式,发现真的只有电子专业比较合适搞这个。比较搞底层和硬件也有接触,电子专业比较有优势。