本文原創 ,轉載必須注明出處 :http://blog.csdn.net/qinjuning
從今天開始,下定決心一步一步開始步入Linux殿堂,重新拾起Linux學習時,依然記得大學時代對Linux的囫囵學習,
勁頭持續不了幾天,就消亡在她那迷惑的外衣下。如今處于對Android系統的究極學習,以及其他很多目的,下定決心把Linux
知識掌握好。
本學習筆記素材來源 :
1、《鳥哥的Linux私房菜_基礎學習篇》(電子檔)
2、 兩篇博文對Linux下C程式設計gcc指令的認知
Linux下C語言程式設計--基礎知識 以及 Linux下的C程式設計實戰
一 、Linux 作業系統來源
大家懂得,省略…..
二、Linux基本知識
說明: 相關截圖來自鳥哥那本書,目前我還沒好好消化吸收 。還得繼續加把勁。
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下一些重要目錄說明
一些比較重要的目錄有:
三 、 Linux下C程式設計入門
熟悉了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
[cpp] view plaincopyprint?
- /**
- name hellword.c
- @author qinjuning
- */
- int main()
- {
- printf("Hello World"n");
- return 0 ;
- }
最簡單的編譯方法是 gcc hellowrold.c 它會為目标程式生成預設的檔案名a.out,直接執行該可執行檔案,即可看到輸出 。
例如 在shell中輸入以下指令:
First Step : gcc helloworld.c ↙ (即輸入Enter鍵) 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
[cpp] view plaincopyprint?
- <span style="font-family:Microsoft YaHei;font-size:16px;"></span><pre class="cpp" name="code">/* 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 ;
- }
兩個頭檔案
[cpp] view plaincopyprint?
- <span style="font-size:16px;">/*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
- </span>
真正函數實作的源檔案
[cpp] view plaincopyprint?
- <span style="font-size:16px;">/*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);
- } </span>
編譯步驟如下:
1 、 編譯:對不同的源檔案生成目标檔案(xxx.0)
gcc -c main.c ↙ 生成 main.o 目标檔案
gcc -c printf_1.c ↙ 生成 printf_1.o 目标檔案
gcc -c printf_2.c ↙ 生成 printf_2.o 目标檔案
2、 連結:将相關的目标檔案連結起來,并形成可執行檔案
gcc -c main main.o printf_1.0 printf_2.o ↙ 即可生成可執行檔案main
3、 輸入 ./main 即可執行該檔案并可看到我們程式結果
關于GCC的更多指令和調試方法,請參考如下兩篇部落格:
1、Linux下C語言程式設計--基礎知識
2、Linux下的C程式設計實戰