重温C语言系列之一(开始Linux下的编程)
2010-12-09 22:50
357 查看
毕业好几年了,工作中一直用C,但是越用反而越觉得掌握的太肤浅,借业余时间重温一遍基础知识。
时间:2010-12-09
主题:开始Linux下的编程
主要内容:
1.编译环境搭建;
2.开始第一个程序,如何编译,链接与运行
3.注意事项
一、编译环境搭建
因为我的系统为Linux环境,所以后续所讲的到都是基于Linux环境而言,不再做特别说明。
一般来讲,只要装好linux系统,大部分情况下,编译环境都是可用的,但也有基本系统的,什么也没有带,这种情况下,只有自已安装了。在Debian家族中,用的是apt包管理工具,RedHat用的是RPM管理工具,以Ubuntu为例,安装时输入如下:
sudo apt-get install build-essential
即可。
如果debug工具也没有的话,安装GDB即可,很好很强大:
sudo apt-get install gdb
二、开始第一个程序
经典的"Hello world"就不要用了,毕竟学了这么多年了,应该换一个了。
找一个文本编辑器,推荐用VIM或Ulipad,输入如下:
完成后,保存为main.c,也可以用其它名字,看你自已喜欢了。接下来要讲到如何编译、链接、运行了,需要提提神看仔细了。我们编译用到的是GCC,简单的编译、链接直接输入:
gcc main.c
会生成a.out。在shell中运行./a.out即可输出结果。我的机器上输出:i=16470004,j=134513723。我们都知道整个过程包含预处理,编译,链接,但是上面用一句话就搞定了,是不是漏掉了什么过程。答案是没有,GNU GCC都帮我们做了,不过后续我们还会详细讲到ld等过程的,此处先让大家知道如何运行起一个程序来。
三、注意事项:
为了有一个良好的编程习惯,对于上面的做法我们是反对的,为了防止程序中隐藏bug,建议打开-Wall -Werror.这两个选项表示尽可能多的提示警告信息,同时将警告信息当作错误处理。如上面我们加上以上选项,编译时则会输出如下:
cc1: warnings being treated as errors
main.c: In function ‘main’:
main.c:24: error: ‘i’ is used uninitialized in this function
main.c:24: error: ‘j’ is used uninitialized in this function
好了,我们修改一下程序,初始化i,j后再编译,什么错误也没提示,运行结果为:i=0,j=0。
时间:2010-12-09
主题:开始Linux下的编程
主要内容:
1.编译环境搭建;
2.开始第一个程序,如何编译,链接与运行
3.注意事项
一、编译环境搭建
因为我的系统为Linux环境,所以后续所讲的到都是基于Linux环境而言,不再做特别说明。
一般来讲,只要装好linux系统,大部分情况下,编译环境都是可用的,但也有基本系统的,什么也没有带,这种情况下,只有自已安装了。在Debian家族中,用的是apt包管理工具,RedHat用的是RPM管理工具,以Ubuntu为例,安装时输入如下:
sudo apt-get install build-essential
即可。
如果debug工具也没有的话,安装GDB即可,很好很强大:
sudo apt-get install gdb
二、开始第一个程序
经典的"Hello world"就不要用了,毕竟学了这么多年了,应该换一个了。
找一个文本编辑器,推荐用VIM或Ulipad,输入如下:
#include <stdio.h> #include <stdlib.h> int main(int argc,char* argv[]) { int i,j; printf("i=%d,j=%d/n",i,j); return 1; }
完成后,保存为main.c,也可以用其它名字,看你自已喜欢了。接下来要讲到如何编译、链接、运行了,需要提提神看仔细了。我们编译用到的是GCC,简单的编译、链接直接输入:
gcc main.c
会生成a.out。在shell中运行./a.out即可输出结果。我的机器上输出:i=16470004,j=134513723。我们都知道整个过程包含预处理,编译,链接,但是上面用一句话就搞定了,是不是漏掉了什么过程。答案是没有,GNU GCC都帮我们做了,不过后续我们还会详细讲到ld等过程的,此处先让大家知道如何运行起一个程序来。
三、注意事项:
为了有一个良好的编程习惯,对于上面的做法我们是反对的,为了防止程序中隐藏bug,建议打开-Wall -Werror.这两个选项表示尽可能多的提示警告信息,同时将警告信息当作错误处理。如上面我们加上以上选项,编译时则会输出如下:
cc1: warnings being treated as errors
main.c: In function ‘main’:
main.c:24: error: ‘i’ is used uninitialized in this function
main.c:24: error: ‘j’ is used uninitialized in this function
好了,我们修改一下程序,初始化i,j后再编译,什么错误也没提示,运行结果为:i=0,j=0。
#include <stdio.h> #include <stdlib.h> int main(int argc,char* argv[]) { int i=0,j=0; printf("i=%d,j=%d/n",i,j); return 1; }
相关文章推荐
- 重温C语言系列之一(开始Linux下的编程)
- Linuxl下C编程系列--C语言(容易疏忽的问题)l
- 开始LINUX C语言编程
- 【linux草鞋应用编程系列】_3_ 进程间通信
- C语言编程打印linux环境变量
- Linux下C语言的多线程编程学习[写得很好哦]
- 【linux草鞋应用编程系列】_4_ 应用程序多线程
- (C#)Windows Shell 编程系列2 - 解释,从“桌面”开始展开
- Linux下安装MySQL数据库以及用C语言编程存取数据库
- linux网络编程之POSIX 共享内存和 系列函数
- Linux下的C语言编程——指针实现矩阵转置
- “Linux跟我学”系列专栏(之四)——Linux Shell编程入门
- linux网络编程:用C语言实现的聊天程序(同步通信)
- x4412开发板&ibox卡片电脑项目实战8-Linux下的C语言编程风格
- Linux下关于时间概念的C语言编程
- 从“hello”开始去分析linux下的socket编程
- linux socket 编程(C语言)--转载
- LINUX下进行C语言编程
- linux下,用c语言编程,实现从一个文件读取内容到另一个文件,可以在文件的不同位置修改文件内容,并保存。
- Linux下的C语言编程——查找介于n1与n2(0<n1<n2<32768)之间所有满足下列条件的整数