国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

Linux環(huán)境基礎(chǔ)開(kāi)發(fā)工具使用(二)

這篇具有很好參考價(jià)值的文章主要介紹了Linux環(huán)境基礎(chǔ)開(kāi)發(fā)工具使用(二)。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問(wèn)。

Linux環(huán)境基礎(chǔ)開(kāi)發(fā)工具使用(二),Linux操作系統(tǒng),linux,運(yùn)維,服務(wù)器

??北塵_:個(gè)人主頁(yè)

??個(gè)人專欄:《Linux操作系統(tǒng)》《經(jīng)典算法試題 》《C++》 《數(shù)據(jù)結(jié)構(gòu)與算法》

??走在路上,不忘來(lái)時(shí)的初心

一、Linux項(xiàng)目自動(dòng)化構(gòu)建工具-make/Makefile

1、背景

  1. 會(huì)不會(huì)寫(xiě)makefile,從一個(gè)側(cè)面說(shuō)明了一個(gè)人是否具備完成大型工程的能力。
  2. 一個(gè)工程中的源文件不計(jì)數(shù),其按類型、功能、模塊分別放在若干個(gè)目錄中,makefile定義了一系列的規(guī)則來(lái)指定,哪些文件需要先編譯,哪些文件需要后編譯,哪些文件需要重新譯,甚至于進(jìn)行更復(fù)雜的功能操作。
  3. makefile帶來(lái)的好處就是——“自動(dòng)化編譯”,一旦寫(xiě)好,只需要一個(gè)make命令,整個(gè)工程完全自動(dòng)編譯,極大的提高了軟件開(kāi)發(fā)的效率。
  4. make是一個(gè)命令工具,是一個(gè)解釋makefile中指令的命令工具,一般來(lái)說(shuō),大多數(shù)的IDE都有這個(gè)命令,比如:Delphi的make,Visual C++的nmake,Linux下GNU的make。makefile都成為了一種在工程方面的編譯方法。
  5. make是一條命令,makefile是一個(gè)文件,兩個(gè)搭配使用,完成項(xiàng)目自動(dòng)化構(gòu)建。

2、實(shí)例代碼

我們首先創(chuàng)建一個(gè)text.c文件

Linux環(huán)境基礎(chǔ)開(kāi)發(fā)工具使用(二),Linux操作系統(tǒng),linux,運(yùn)維,服務(wù)器

然后vim打開(kāi)text.c文件進(jìn)行編輯,編輯完后退出

Linux環(huán)境基礎(chǔ)開(kāi)發(fā)工具使用(二),Linux操作系統(tǒng),linux,運(yùn)維,服務(wù)器

創(chuàng)建一個(gè)makefile文件,并vim打開(kāi)進(jìn)行編寫(xiě)

Linux環(huán)境基礎(chǔ)開(kāi)發(fā)工具使用(二),Linux操作系統(tǒng),linux,運(yùn)維,服務(wù)器

并使用make指令進(jìn)行操作

Linux環(huán)境基礎(chǔ)開(kāi)發(fā)工具使用(二),Linux操作系統(tǒng),linux,運(yùn)維,服務(wù)器


3、依賴關(guān)系

上面的文件 text ,它依賴 text.o
text.o , 它依賴 text.s
text.s , 它依賴 text.i
text.i, 它依賴 text.c


4、依賴方法

gcc text.* -option text.* ,就是與之對(duì)應(yīng)的依賴關(guān)系


5、原理

make是如何工作的,在默認(rèn)的方式下,也就是我們只輸入make命令。那么,

  1. make會(huì)在當(dāng)前目錄下找名字叫“Makefile”或“makefile”的文件。
  2. 如果找到,它會(huì)找文件中的第一個(gè)目標(biāo)文件(target),在上面的例子中,他會(huì)找到“text”這個(gè)文件,并把這個(gè)文件作為最終的目標(biāo)文件。
  3. 如果text文件不存在,或是text所依賴的后面的text.o文件的文件修改時(shí)間要比text這個(gè)文件新(可以用 touch 測(cè)試),那么,他就會(huì)執(zhí)行后面所定義的命令來(lái)生成hello這個(gè)文件。
  4. 如果text所依賴的text.o文件不存在,那么make會(huì)在當(dāng)前文件中找目標(biāo)為text.o文件的依賴性,如果找到則再根據(jù)那一個(gè)規(guī)則生成text.o文件。(這有點(diǎn)像一個(gè)堆棧的過(guò)程)
  5. 當(dāng)然,你的C文件和H文件是存在的啦,于是make會(huì)生成 text.o 文件,然后再用 text.o 文件聲明make的終極任務(wù),也就是執(zhí)行文件text了。
  6. 這就是整個(gè)make的依賴性,make會(huì)一層又一層地去找文件的依賴關(guān)系,直到最終編譯出第一個(gè)目標(biāo)文件。
  7. 在找尋的過(guò)程中,如果出現(xiàn)錯(cuò)誤,比如最后被依賴的文件找不到,那么make就會(huì)直接退出,并報(bào)錯(cuò),而對(duì)于所定義的命令的錯(cuò)誤,或是編譯不成功,make根本不理。
  8. make只管文件的依賴性,即,如果在我找了依賴關(guān)系之后,冒號(hào)后面的文件還是不在,那么對(duì)不起我就不工作啦。

6、項(xiàng)目清理

  1. 工程是需要被清理的
  2. 像clean這種,沒(méi)有被第一個(gè)目標(biāo)文件直接或間接關(guān)聯(lián),那么它后面所定義的命令將不會(huì)被自動(dòng)執(zhí)行,不過(guò),我們可以顯示要make執(zhí)行。即命令——“make clean”,以此來(lái)清除所有的目標(biāo)文件,以便重編譯。
  3. 但是一般我們這種clean的目標(biāo)文件,我們將它設(shè)置為偽目標(biāo),用 .PHONY 修飾,偽目標(biāo)的特性是,總是被執(zhí)行的。
  4. 可以將我們的 hello 目標(biāo)文件聲明成偽目標(biāo),測(cè)試一下。

二、Linux第一個(gè)小程序-進(jìn)度條

1、\r&&\n

‘\r’是回車,前者使光標(biāo)到行首,(carriage return)’\n’是換行,后者使光標(biāo)下移一格。

老式enter鍵

Linux環(huán)境基礎(chǔ)開(kāi)發(fā)工具使用(二),Linux操作系統(tǒng),linux,運(yùn)維,服務(wù)器


2、行緩沖區(qū)概念

1、什么現(xiàn)象?

#include <stdio.h>
int main()
{
 printf("hello Makefile!\n");
 sleep(3);
 return 0;
 }

Linux環(huán)境基礎(chǔ)開(kāi)發(fā)工具使用(二),Linux操作系統(tǒng),linux,運(yùn)維,服務(wù)器
Linux環(huán)境基礎(chǔ)開(kāi)發(fā)工具使用(二),Linux操作系統(tǒng),linux,運(yùn)維,服務(wù)器

2、什么現(xiàn)象?

#include <stdio.h>
int main()
{
 printf("hello Makefile!");
 sleep(3);
 return 0;
}
 

Linux環(huán)境基礎(chǔ)開(kāi)發(fā)工具使用(二),Linux操作系統(tǒng),linux,運(yùn)維,服務(wù)器
Linux環(huán)境基礎(chǔ)開(kāi)發(fā)工具使用(二),Linux操作系統(tǒng),linux,運(yùn)維,服務(wù)器

3、什么現(xiàn)象?

#include <stdio.h>
int main()
{
 printf("hello Makefile!");
 fflush(stdout);
 sleep(3);
 return 0;
}

Linux環(huán)境基礎(chǔ)開(kāi)發(fā)工具使用(二),Linux操作系統(tǒng),linux,運(yùn)維,服務(wù)器
Linux環(huán)境基礎(chǔ)開(kāi)發(fā)工具使用(二),Linux操作系統(tǒng),linux,運(yùn)維,服務(wù)器


3、進(jìn)度條代碼

1、版本一

#include<stdio.h>
#include<unistd.h>
#include<string.h>
#include<stdlib.h>
const char* lable="|/-\\";
int main()
{
   char buffer[NUM];
   memset(buffer, '\0', sizeof(buffer));
   int cnt = 0;
   int n = strlen(lable);
   buffer[0] = Head;
   while(cnt <= 100)
   {
       printf("[%-100s][%3d%%][%c]\r", buffer, cnt, lable[cnt%n]);
       fflush(stdout);
       buffer[cnt++] = '=';
       if(cnt < 100) buffer[cnt] = '>';
       usleep(50000);
   }

   printf("\n");
}

Linux環(huán)境基礎(chǔ)開(kāi)發(fā)工具使用(二),Linux操作系統(tǒng),linux,運(yùn)維,服務(wù)器
Linux環(huán)境基礎(chǔ)開(kāi)發(fā)工具使用(二),Linux操作系統(tǒng),linux,運(yùn)維,服務(wù)器

2、版本二 ,跟下載速度牽連

#include<stdio.h>
#include<unistd.h>
#include<stdlib.h>
#include<string.h>
#include<time.h>
typedef void (*callback_t)(double);
define max 103
define size 1024*1024*1024
const char* lable="|/-\\";
char buffer[max]={0};
void process_flush(double rate)
   {
      static int cnt = 0;
      int n = strlen(lable);
      if(rate <= 1.0) buffer[0] = '>';
      printf("[%-100s][%.1f%%][%c]\r", buffer, rate, lable[cnt%n]);
      fflush(stdout);
  
      buffer[(int)rate] = '=';
      if((int)rate+1 < 100) buffer[(int)(rate+1)] = '>';                                                                
      if(rate>=100.0) printf("\n");
  
      cnt++;
      cnt%=n;
  }
void download()
  {
      srand(time(NULL)^1023);
      int total=size;
      while(total)
       {
          int one=rand()%(1024*1024);
          total-=one;
          if(total<=0) total=0;
          int download=size-total;
           double rate = (download*1.0/(size))*100.0;
          process_flush(rate);
  
      }
  }
  int main()
  {
      download();
  }


Linux環(huán)境基礎(chǔ)開(kāi)發(fā)工具使用(二),Linux操作系統(tǒng),linux,運(yùn)維,服務(wù)器文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-744422.html


到了這里,關(guān)于Linux環(huán)境基礎(chǔ)開(kāi)發(fā)工具使用(二)的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來(lái)自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場(chǎng)。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請(qǐng)注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請(qǐng)點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • 【Linux】Linux環(huán)境基礎(chǔ)開(kāi)發(fā)工具的使用 ———(yum、vim、gcc&g++、gdb、make/Makefile、進(jìn)度條 、git)

    【Linux】Linux環(huán)境基礎(chǔ)開(kāi)發(fā)工具的使用 ———(yum、vim、gcc&g++、gdb、make/Makefile、進(jìn)度條 、git)

    (???(??? )??,我是 Scort ?? ??博客主頁(yè):張小姐的貓~江湖背景?? 快上車??,握好方向盤(pán)跟我有一起打天下嘞! 送給自己的一句雞湯??: ??集中起來(lái)的意志可以擊穿頑石?? ??作者水平很有限,如果發(fā)現(xiàn)錯(cuò)誤,可在評(píng)論區(qū)指正,感謝?? ????歡迎持續(xù)關(guān)注!????

    2024年01月16日
    瀏覽(59)
  • 【Linux環(huán)境基礎(chǔ)開(kāi)發(fā)工具】編輯器-vim

    【Linux環(huán)境基礎(chǔ)開(kāi)發(fā)工具】編輯器-vim

    vim是一個(gè)編輯器,是在Linux下編程的常用工具,如果要學(xué)習(xí)在Linux下的編程, 那學(xué)會(huì)使用vim是一個(gè)必修課,今天我就來(lái)講解如何使用vim編輯器。 目錄 寫(xiě)在前面 什么是vim vim的常用命令 (1)gg:定位光標(biāo)到第一行第一個(gè)位置 (2)shift + g:定位光標(biāo)到最后一行 (3)n + shift + g:

    2024年02月07日
    瀏覽(32)
  • 【Linux環(huán)境基礎(chǔ)開(kāi)發(fā)工具】軟件包管理器-yum

    【Linux環(huán)境基礎(chǔ)開(kāi)發(fā)工具】軟件包管理器-yum

    今天我打算介紹如何在Linux環(huán)境下載軟件, Linux作為一個(gè)操作系統(tǒng),就像windows一樣,當(dāng)然是存在軟件的。 目錄 寫(xiě)在前面 怎么在Linux環(huán)境安裝軟件 源代碼安裝 rpm安裝包安裝 yum安裝 如何理解Linux的生態(tài) 如何使用yum安裝軟件 如何更換yum源 總結(jié): 寫(xiě)在最后: 一般來(lái)說(shuō),Linux下有

    2024年02月08日
    瀏覽(63)
  • 【Linux環(huán)境基礎(chǔ)開(kāi)發(fā)工具】編譯器-gcc/g++

    【Linux環(huán)境基礎(chǔ)開(kāi)發(fā)工具】編譯器-gcc/g++

    上一篇博客, 我們學(xué)習(xí)了vim編輯工具,學(xué)會(huì)了怎么寫(xiě)代碼, 這篇文章,我將分享代碼該怎么編譯的問(wèn)題。 目錄 寫(xiě)在前面: 1. gcc和g++介紹 2. gcc是如何編譯程序的 1. 預(yù)處理 2. 編譯 3. 匯編 4. 鏈接 3. gcc的選項(xiàng)介紹 4. 我們使用的函數(shù)是哪來(lái)的 5. 我們的.o文件和庫(kù)是如何鏈接的?

    2024年02月10日
    瀏覽(59)
  • Linux基礎(chǔ)開(kāi)發(fā)工具之Linux自動(dòng)項(xiàng)目構(gòu)建工具的使用

    Linux基礎(chǔ)開(kāi)發(fā)工具之Linux自動(dòng)項(xiàng)目構(gòu)建工具的使用

    目錄 前言 1.make/makefile 1.1?依賴關(guān)系/依賴方法 2.原理 3.項(xiàng)目清理 ?4.make的執(zhí)行問(wèn)題 ?5.相關(guān)簡(jiǎn)單的符號(hào)介紹 總結(jié) ? 之前給大家介紹了我們?cè)陂_(kāi)發(fā)過(guò)程中所需要使用到的編輯器vim,以及編譯器gcc/g++的使用,但是我相信大家在使用過(guò)程會(huì)發(fā)現(xiàn)我們?cè)诿看尉帉?xiě)好一份代碼時(shí)總是需

    2024年02月13日
    瀏覽(32)
  • linux中基礎(chǔ)開(kāi)發(fā)工具的使用

    linux中基礎(chǔ)開(kāi)發(fā)工具的使用

    1.linux中的軟件包管理器 1.1什么是軟件包 在Linux下安裝軟件, 一個(gè)通常的辦法是下載到程序的源代碼, 并進(jìn)行編譯, 得到可執(zhí)行程序.但是這樣太麻煩了, 于是有些人把一些常用的軟件提前編譯好, 做成軟件包(可以理解成windows上的安裝程序)放在一個(gè)服務(wù)器上, 通過(guò)包管理器可以很

    2024年02月02日
    瀏覽(39)
  • 【Linux】基礎(chǔ)開(kāi)發(fā)工具使用 --- gcc

    【Linux】基礎(chǔ)開(kāi)發(fā)工具使用 --- gcc

    目錄 預(yù)處理 編譯 匯編 鏈接 函數(shù)庫(kù) 協(xié)助記憶 ??GCC(GNU?Compiler Collection)是由GNU開(kāi)發(fā)的編程語(yǔ)言編譯器。GNU編譯器套件包括C、C++、?Objective-C、?Fortran、Java、Ada和Go語(yǔ)言前端,也包括了這些語(yǔ)言的庫(kù)(如libstdc++,libgcj等。),說(shuō)那么多就是一個(gè)編譯器。平時(shí)寫(xiě)完的程序就是需

    2024年02月03日
    瀏覽(26)
  • 【Linux操作系統(tǒng)】探秘Linux奧秘:Linux開(kāi)發(fā)工具的解密與實(shí)戰(zhàn)

    【Linux操作系統(tǒng)】探秘Linux奧秘:Linux開(kāi)發(fā)工具的解密與實(shí)戰(zhàn)

    ??個(gè)人主頁(yè): Sarapines Programmer ???系列專欄: 《操作系統(tǒng)實(shí)驗(yàn)室》 ??詩(shī)賦清音:柳垂輕絮拂人衣,心隨風(fēng)舞夢(mèng)飛。 山川湖海皆可涉,勇者征途逐星輝。 目錄 ??1 初識(shí)Linux OS ??2?Linux開(kāi)發(fā)工具的解密與實(shí)戰(zhàn) ??1. 實(shí)驗(yàn)?zāi)康???2. 實(shí)驗(yàn)準(zhǔn)備 ??3. 實(shí)驗(yàn)內(nèi)容 ??4. 實(shí)驗(yàn)心得 ??總

    2024年02月03日
    瀏覽(52)
  • 【Linux基礎(chǔ)開(kāi)發(fā)工具】yum生態(tài)&&vim的配置與使用

    【Linux基礎(chǔ)開(kāi)發(fā)工具】yum生態(tài)&&vim的配置與使用

    目錄 前言? 1. Linux 軟件包管理器 yum ? 1.1 什么是yum ?1.2 快速上手yum ?1.3 yum生態(tài) 2. Linux編輯器vim 2.1 vim的模式 2.2 vim使用技巧 3. vim編輯器輔助功能配置 3.1 配置 ?3.2 用戶sudo權(quán)限配置 ?總結(jié) ? ? ? ? Linux基礎(chǔ)指令與權(quán)限之后,Linux系統(tǒng)開(kāi)發(fā)工具的使用也至關(guān)重要,今天我將分享

    2024年02月04日
    瀏覽(26)
  • Linux之基礎(chǔ)開(kāi)發(fā)工具gdb調(diào)試器的使用(三)

    Linux之基礎(chǔ)開(kāi)發(fā)工具gdb調(diào)試器的使用(三)

    ??北塵_ :個(gè)人主頁(yè) ??個(gè)人專欄 :《Linux操作系統(tǒng)》《經(jīng)典算法試題 》《C++》 《數(shù)據(jù)結(jié)構(gòu)與算法》 ??走在路上,不忘來(lái)時(shí)的初心 yum install -y gdb 程序的發(fā)布方式有兩種,debug模式和release模式 Linux gcc/g++出來(lái)的二進(jìn)制程序,默認(rèn)是release模式,release模式下無(wú)法調(diào)試 要使用gd

    2024年02月05日
    瀏覽(22)

覺(jué)得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請(qǐng)作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包