玩轉centos7(3)--從編程開始

是的,面對全新的centos7的世界,我們選擇從編寫程序作爲切入點,不要糾結了,拿起你那牛逼的電腦,動起手來吧

-------------------------------------------------------以後的練習將在xshell環境下--------------------------------------------------------------

在用戶主目錄下新建一個目錄“linux_c”作爲C語言編程練習的工作區(工作區是git裏的叫法)


打開vi,編寫一個簡單的C程序。那麼問題來了,在linux裏我們怎樣編譯運行我們的C程序呢,這就需要用到linux世界裏最強大的編譯器gcc

運行:gcc first.c -o first      此時查看當前目錄就會發現出現了可執行文件first,執行可執行文件first:./first  便可以看到運行結果

這是,你可能就會對gcc產生好奇心了,那麼gcc怎麼使用呢?

---------------------------------------------------------------------gcc用法-----------------------------------------------------------------------------

最常用的方法:gcc  源文件  -o 可執行文件名       其中“-o”參數意爲gcc最終產生的結果文件

還可以根據C程序的編譯過程:預編譯,編譯,彙編,鏈接  分步執行gcc


各項參數含義自行百度

-------------------------------------------------------------------函數庫的使用----------------------------------------------------------------------------

C語言是由變量和函數組成的,常用的函數我們常常將其集成函數庫。函數庫分爲靜態函數庫和動態函數庫(區別自行百度),那麼問題又來了,怎樣使用gcc使用函數庫

我們以最基礎的一個小程序“求兩個數的最大公約數”爲例

源程序如下:

/*hanshu.c*/

/* 功能:返回正整數m和n的最大公約數*/
unsigned gcd ( unsigned m,unsigned n )
{
unsigned temp;
if (m<n)
{
temp=m;
m=n;
n=temp;
}
if ( m % n == 0)
{
return n;
}
else
{
return gcd ( n,m % n) ;
}
}

/*zhu.c*/

#include <stdio.h>
unsigned gcd ( unsigned,unsigned ) ;
int main( void )
{
unsigned m,n;
printf("請輸入兩個正整數:");
scanf("%u%u",&m,&n);
printf("%u與%u的最大公約數爲:%u\n",m,n,gcd ( m,n ) );
return 0;
}



1.st靜態函數庫

在這裏我們需要把hanshu.c製作成靜態函數庫


你會看到如此多的命令,其實實際命令只有四行,請仔細找出我所犯的錯誤!

這是問題來了,由於源程序裏邊有漢字,而我安裝的時候選擇的是英文模式,所以我現在要解決語系的問題

---------------------------------------------------------------------增加中文語系--------------------------------------------------------------------------------

在以往的centos裏是需要修改這個配置文件 /etc/sysconfig/i18 的,而在centos7裏邊需要修改這個/etc/locale.con

將LANG="en_US.UTF-8" 換成 LANG="zh_CN.UTF-8"編輯保存wq即可,重啓系統
-------------------------------------------------------繼續我們的gcc---------------------------------------------------------------
將文件製作成動態函數庫

爲什麼出不來運行結果呢?錯誤提示告訴我們找不到共享文件,這是怎麼回事呢?

什麼?沒有查找文件locate這個命令?沒關係,沒有的話我們就安裝。先找包,在安裝

安裝完成後輸入updated  即可使用locate
可以看到動態函數庫實在lib目錄下的,但是此時運行可執行文件還是會找不到的,這時應該首先想到一個名詞:環境變量
-------------------------------------------------環境變量-------------------------------------------------------------
Linux是不會主動找lib路徑的,只會找系統路徑,我們查看一下系統路徑
結果非常肯定,/usr/lib沒有在系統變量即linux自動搜索的路徑裏
解決方案有兩個:
1.st 將庫放到系統路徑
成功解決
2.st在執行可執行文件前,先敲一句:export LD_LIBRARY_PATH=/usr/lib
LD_LIBRARY_PATH是linux系統中一個非常重要的環境變量。
linux會從這個環境變量給定的路徑去搜索shared libraries,所以如果你的.so文件所在的path沒有加到LD_LIBRARY_PATH中,那麼所有需要這個so的程序就無法運行

----------------------------------------------------------------------------------------The End--------------------------------------------------------------------------------------

gcc就介紹到這裏,你可能發覺我的思路了,就是以C語言編程爲線索,主要是學習centos7.下一節我們將認識程序調試器gdb

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章