本文原创 ,转载必须注明出处 :http://blog.csdn.net/qinjuning
从今天开始,下定决心一步一步开始步入Linux殿堂,重新拾起Linux学习时,依然记得大学时代对Linux的囫囵学习,
劲头持续不了几天,就消亡在她那迷惑的外衣下。如今处于对Android系统的究极学习,以及其他很多目的,下定决心把Linux
知识掌握好。
本学习笔记素材来源 :
1、《鸟哥的Linux私房菜_基础学习篇》(电子档)
2、 两篇博文对Linux下C编程gcc命令的认知
Linux下C语言编程--基础知识以及 Linux下的C编程实战
大家懂得,省略…..
说明:相关截图来自鸟哥那本书,目前我还没好好消化吸收 。还得继续加把劲。
1、 Linnux 命令行介绍
例如,我们常见的列出当前目录的文件/文件夹的基本命令为: ls –al main
说明: ls 为一个command
–al 为options a 表示列出隐藏文件 ; l 表示 列出文件/文件下的详细信息
main 为 parameter1 表示仅仅列出以“main“ 开头的文件/文件夹
其他常用的命令包括:
ls 列出当前目录的所有文件/文件夹信息
data 列出当前时间日期
cd 切换路径
当然了,这么多command---命令超多并且每个用法超多,我们当然不可能如此记得,因此最强大的一个指令就是 man
指令了。 该命令的用法如下:
man command
即可 , 知晓该command的所有用法了 。
2、Linux文件属性说明:
进入Linux后,在任何一目录 键入如下命令 ls -al (该命令的意思是:详细列出所有文件和文件夹的信息) , 可以看到
如下信息,加上了说明信息:
相关属性说明:
第一列表达的信息是最重要的了, 图解如下:
属性详细说明为:
其他的属性相对而言就比较好理解了。
3、Linux下一些重要目录说明
一些比较重要的目录有:
熟悉了Windows下编程的同学,初次接触Linux下C编程可能很不习惯,因为Linux并没有为我们提供集成开发环境IDE,
例如Windows下的 VC,Visual Studio 等 。但是在Linux下C编程,能给你带来不一样的感受,它可以让你熟悉编译器如何生成
可执行文件的各个步骤等。
一般来说,生成一个可执行文件需要以下两步:
1、编译:即编译源文件 ,生成目标文件
2 、链接:即将相关的目标文件链接起来,生成一个最终可以执行的可执行文件。(在Windows中,命名一般以.exe结束 ;
Linux下,则以文件属性-x来标记)
最后,执行该可执行文件即可看到程序输出了。
再次强调的一点是,关于程序编译的一些规范和方法,一般来说,无论是C、C++、还是pas,首先要把源文件编译成中间
代码文件,在Windows下也就是 .obj 文件,UNIX下是 .o 文件,即 Object File,这个动作叫做编译(compile)。然后再把
大量的Object File合成执行文件,这个动作叫作链接(link)。
总结一下,源文件首先会生成中间目标文件,再由中间目标文件生成执行文件。在编译时,编译器只检测程序语法,和函
数、变量是否被声明。如果函数未被声明,编译器会给出一个警告,但可以生成Object File。而在链接程序时,链接器会在所有
的Object File中找寻函数的实现,如果找不到,那到就会报链接错误码(Linker Error),在VC下,这种错误一般是:Link 2001
错误,意思说是说,链接器未能找到函数的实现。你需要指定函数的Object File.
Linux下C编译器利剑GCC 命令初步认知
GCC编译器是Linux平台下最重要的开发工具,它是GNU的C和C++编译器,其基本用法为:
gcc [options] [filenames]
说明:为了下述表达方便,假定存在如下一个简单的C源文件,
helloword.c
/** name hellword.c @author qinjuning */ int main() { printf("Hello World"n"); return 0 ; }
最简单的编译方法是 gcc hellowrold.c 它会为目标程序生成默认的文件名a.out,直接执行该可执行文件,即可看到输出。
例如 在shell中输入以下命令:
First Step :gcchelloworld.c ↙(即输入回车键) Result :即可生成a.out 可执行文件
Second:./a.out Result : 执行该文件,即可看到程序输出 。
options为编译选项,GCC总共提供的编译选项超过100个,但只有少数几个会被频繁使用,我们仅对几个常用选项进行介绍。
-o含义:生成目标文件并且为指定生成的目标文件命名 ,
例如: gcc –o helloworld helloworld.c 那么生成的可执行文件为hello ,而不是a.out
-c含义: -c选项告诉GCC仅把源代码编译为目标代码而跳过汇编和连接的步骤,默认生成文件名为 [file_name].o 。
PS: 由于头文件以及引用关系,我们同样要利用gcc –o命令为了对相关目标文件进行编译,以便生成一个可执行文件。
假设存在如下源代码,包含了主文件和头文件等
主文件: main.c /* main.c */ #include <stdio.h> #include "first_1.h" #include "first_2.h" int main() { printf_str("This is my first linux c") ; print_to_num(10) ; return 0 ; } 两个头文件 /*printf_1.h */ #ifnde _FIRST_H_ #define _FIRST_H_ void printf_str(char *str); #endif /*printf_2.h */ #ifnde _SECOND_H_ #define _FIRST_H_ void print_to_num(int num); #endif 真正函数实现的源文件 /*printf_1.c */ #include <stdio.h> #include "first_1.h" void printf_str(char *str) { printf("%s . I am com" , str); } /*printf_2.c */ #include <stdio.h> #include "first_2.h" void print_to_num(int value) { int i = 0 ; for( ;i < value ;i++) printf("cur value is %d ##\n" , i); }
编译步骤如下:
1 、编译:对不同的源文件生成目标文件(xxx.0)
gcc -cmain.c ↙ 生成 main.o 目标文件
gcc -cprintf_1.c ↙ 生成 printf_1.o目标文件
gcc -cprintf_2.c ↙ 生成 printf_2.o目标文件
2、链接:将相关的目标文件链接起来,并形成可执行文件
gcc -c mainmain.o printf_1.0 printf_2.o ↙ 即可生成可执行文件main
3、输入 ./main 即可执行该文件并可看到我们程序结果
关于GCC的更多命令和调试方法,请参考如博客: