<output id="qn6qe"></output>

    1. <output id="qn6qe"><tt id="qn6qe"></tt></output>
    2. <strike id="qn6qe"></strike>

      亚洲 日本 欧洲 欧美 视频,日韩中文字幕有码av,一本一道av中文字幕无码,国产线播放免费人成视频播放,人妻少妇偷人无码视频,日夜啪啪一区二区三区,国产尤物精品自在拍视频首页,久热这里只有精品12

      20231302-邱之釗-C編程工具測(cè)試

      你好,20231302 邱之釗!很高興看到你正在學(xué)習(xí)Linux C編程,這對(duì)你未來(lái)在國(guó)產(chǎn)化操作系統(tǒng)上的就業(yè)非常有幫助。我會(huì)根據(jù)你的中等基礎(chǔ),詳細(xì)講解每個(gè)步驟,幫助你更好地理解和掌握這些知識(shí)。讓我們一起努力,逐步完成這些任務(wù)!

      完成下面任務(wù)(29 分

      首先,我推薦你使用 openEuler 系統(tǒng)來(lái)完成這些任務(wù),因?yàn)樗N近你未來(lái)的就業(yè)環(huán)境。我會(huì)從基礎(chǔ)開(kāi)始,一步步引導(dǎo)你,確保你能跟上。

      任務(wù)1:編寫(xiě) hello.c 并編譯運(yùn)行

      在這個(gè)任務(wù)中,你需要編寫(xiě)一個(gè)簡(jiǎn)單的C程序,打印出你的學(xué)號(hào)和名字,然后使用gcc命令完成編譯預(yù)處理、編譯、匯編和鏈接的過(guò)程,并用git記錄。關(guān)鍵步驟包括:編寫(xiě)代碼、使用gcc分步編譯、運(yùn)行程序并驗(yàn)證輸出,以及使用git進(jìn)行版本控制。這對(duì)于理解C程序的編譯過(guò)程非常重要。

      先創(chuàng)建一個(gè)目錄來(lái)存放你的項(xiàng)目文件:

      mkdir -p ~/project1
      cd ~/project1
      

      編寫(xiě) hello.c 文件:

      #include <stdio.h>
      
      int main() {
          printf("hello 20231302 邱之釗");
          return 0;
      }
      

      現(xiàn)在,使用gcc命令分步編譯:

      預(yù)處理:gcc -E hello.c -o hello.i – 這會(huì)處理頭文件和宏,生成預(yù)處理后的文件 hello.i。
      編譯:gcc -S hello.i -o hello.s – 將預(yù)處理后的代碼編譯成匯編代碼 hello.s。
      匯編:gcc -c hello.s -o hello.o – 將匯編代碼轉(zhuǎn)換成目標(biāo)文件 hello.o。
      鏈接:gcc hello.o -o hello – 將目標(biāo)文件鏈接成可執(zhí)行文件 hello。
      運(yùn)行程序:./hello,輸出應(yīng)該是 "hello 20231302 邱之釗"。
      

      使用git記錄過(guò)程:

      git init
      git add hello.c hello.i hello.s hello.o hello
      git commit -m "添加hello.c和編譯過(guò)程文件"
      

      這個(gè)任務(wù)幫助你理解C程序從源代碼到可執(zhí)行文件的完整流程,這是編程基礎(chǔ)中的核心知識(shí)。

      屏幕截圖 2025-09-25 144434

      屏幕截圖 2025-09-25 144548

      任務(wù)2:判斷電腦是大端還是小端

      在這個(gè)任務(wù)中,你需要編寫(xiě)至少兩個(gè)函數(shù)來(lái)判斷電腦的字節(jié)序(大端或小端),并在main函數(shù)中調(diào)用它們。字節(jié)序指的是數(shù)據(jù)在內(nèi)存中的存儲(chǔ)順序,大端是高位字節(jié)在前,小端是低位字節(jié)在前。這在網(wǎng)絡(luò)編程和底層開(kāi)發(fā)中很常見(jiàn)。

      先創(chuàng)建一個(gè)新目錄:

      mkdir -p ~/project2
      
      cd ~/project2
      

      編寫(xiě)一個(gè)頭文件 endian.h:

      #ifndef ENDIAN_H
      #define ENDIAN_H
      
      int is_big_endian();
      int is_little_endian();
      
      #endif
      

      編寫(xiě)源文件 endian.c:

      #include "endian.h"
      
      int is_big_endian() {
          unsigned int num = 0x1;
          char *byte = (char *)#
          return (byte[0] == 0);
      }
      
      int is_little_endian() {
          unsigned int num = 0x1;
          char *byte = (char *)#
          return (byte[0] == 1);
      }
      

      編寫(xiě) main.c:

      #include <stdio.h>
      #include "endian.h"
      
      int main() {
          if (is_big_endian()) {
              printf("This computer is big endian.");
          } else if (is_little_endian()) {
              printf("This computer is little endian.");
          } else {
              printf("Unknown endianness.");
          }
          return 0;
      }
      

      編譯和運(yùn)行:

      gcc -c endian.c -o endian.o
      gcc main.c endian.o -o main
      ./main
      

      輸出會(huì)告訴你電腦的字節(jié)序。這個(gè)任務(wù)讓你實(shí)踐函數(shù)模塊化和調(diào)用,同時(shí)學(xué)習(xí)底層內(nèi)存知識(shí)。
      image

      image

      任務(wù)3:制作和使用靜態(tài)庫(kù)與共享庫(kù)

      現(xiàn)在,你將把上面的代碼制作成靜態(tài)庫(kù)和共享庫(kù)。靜態(tài)庫(kù)在編譯時(shí)鏈接到程序中,而共享庫(kù)在運(yùn)行時(shí)動(dòng)態(tài)加載,這提高了代碼的復(fù)用性和可維護(hù)性。

      首先,創(chuàng)建靜態(tài)庫(kù):

      ar rcs libendian.a endian.o
      

      使用靜態(tài)庫(kù)編譯:

      gcc main.c -L. -lendian -o main_static
      

      創(chuàng)建共享庫(kù):

      gcc -shared -fPIC endian.c -o libendian.so
      

      使用共享庫(kù)編譯:

      gcc main.c -L. -lendian -o main_shared
      

      運(yùn)行前,設(shè)置庫(kù)路徑:

      export LD_LIBRARY_PATH=.:$LD_LIBRARY_PATH
      ./main_shared
      

      制作和使用庫(kù)是大型項(xiàng)目中的常見(jiàn)實(shí)踐,能減少代碼冗余并提高效率。
      image

      任務(wù)4:按指定結(jié)構(gòu)組織代碼并編譯

      在這個(gè)任務(wù)中,你需要將代碼按bin、include、lib、src目錄組織,然后編譯和使用庫(kù)。這模擬了真實(shí)項(xiàng)目的結(jié)構(gòu),有助于你學(xué)習(xí)項(xiàng)目管理和構(gòu)建流程。

      創(chuàng)建目錄結(jié)構(gòu):

      mkdir -p project4/{bin,include,lib,src}
      

      移動(dòng)文件:

      將 endian.h 放到 include/
      將 endian.c 和 main.c 放到 src/
      編譯后,可執(zhí)行文件放到 bin/,庫(kù)文件放到 lib/
      

      編譯步驟:

      cd src
      gcc -c endian.c -o ../lib/endian.o
      ar rcs ../lib/libendian.a ../lib/endian.o
      gcc -shared -fPIC endian.c -o ../lib/libendian.so
      gcc main.c -I../include -L../lib -lendian -o ../bin/main
      

      運(yùn)行:

      cd ../bin
      export LD_LIBRARY_PATH=../lib:$LD_LIBRARY_PATH
      ./main
      

      這個(gè)任務(wù)強(qiáng)化了目錄結(jié)構(gòu)和構(gòu)建命令的使用,為你未來(lái)的項(xiàng)目開(kāi)發(fā)打下基礎(chǔ)。
      image

      任務(wù)5:補(bǔ)充Makefile

      最后,你需要為項(xiàng)目編寫(xiě)一個(gè)簡(jiǎn)單的Makefile。Makefile自動(dòng)化了編譯過(guò)程,提高了開(kāi)發(fā)效率,是Linux編程中不可或缺的工具。

      在項(xiàng)目根目錄創(chuàng)建 Makefile:

      main: src/main.c src/endian.c include/endian.h
      	gcc -Iinclude src/main.c src/endian.c -o bin/main
      
      clean:
      	rm -f bin/main
      

      使用make編譯:

      make
      make clean
      

      通過(guò)學(xué)習(xí)Makefile,你能更好地管理復(fù)雜項(xiàng)目的構(gòu)建過(guò)程。
      image

      20231302 邱之釗,這些任務(wù)涵蓋了C編程的基礎(chǔ)到進(jìn)階知識(shí),包括編譯過(guò)程、模塊化、庫(kù)的使用和項(xiàng)目結(jié)構(gòu)。我鼓勵(lì)你動(dòng)手實(shí)踐,每一步都自己嘗試一遍。如果有問(wèn)題,隨時(shí)問(wèn)我!堅(jiān)持練習(xí),你會(huì)逐步掌握這些技能,為未來(lái)的職業(yè)生涯做好準(zhǔn)備。加油!

      作業(yè)提交要求 (1')

      拷貝出AI生成的所有內(nèi)容,把你實(shí)踐編譯和測(cè)試過(guò)程截圖插入,AI生成內(nèi)容不滿意,可以刷新一下,代碼可能不能直接使用,需要你做簡(jiǎn)單修改
      (選做)推薦所有作業(yè)托管到 gitee或 github 上
      (必做)提交作業(yè) markdown文檔,命名為“學(xué)號(hào)-姓名-作業(yè)題目.md”
      (必做)提交作業(yè) markdown文檔轉(zhuǎn)成的 PDF 文件,命名為“學(xué)號(hào)-姓名-作業(yè)題目.pdf”

      posted @ 2025-09-25 15:00  20231302邱之釗  閱讀(6)  評(píng)論(0)    收藏  舉報(bào)
      主站蜘蛛池模板: 成在人线av无码免费| 免费一区二三区三区蜜桃| 成av人电影在线观看| 最新中文字幕国产精品| 欧美成人午夜精品免费福利| 国产精品普通话国语对白露脸| 亚洲av日韩av永久无码电影| 欧美黑人大战白嫩在线| 亚洲av成人无码天堂| 久久一亚色院精品全部免费| 亚洲一区精品视频在线 | 国产影片AV级毛片特别刺激| 国产精品美女一区二区三| 婷婷色香五月综合缴缴情香蕉| 英吉沙县| 不卡免费一区二区日韩av| 亚洲国产成人久久精品APP| 国产成人午夜福利院| 麻豆果冻传媒2021精品传媒一区| 久久88香港三级台湾三级播放| 久久国语对白| 蜜桃av亚洲精品一区二区| xx性欧美肥妇精品久久久久久| 一区二区亚洲人妻av| 日本少妇自慰免费完整版| 麻豆成人精品国产免费| 亚洲av无码牛牛影视在线二区 | 人人妻人人狠人人爽天天综合网| 四虎在线中文字幕一区| 99久久婷婷国产综合精品青草漫画| 99视频30精品视频在线观看| 乱色老熟妇一区二区三区| 成人国产乱对白在线观看| 中国国产免费毛卡片| 艳妇臀荡乳欲伦交换h在线观看 | 成全影视大全在线观看| 久久精品国产99久久6| 七台河市| 国产成人av电影在线观看第一页 | 久久夜色精品国产噜噜亚洲sv| 国产国产乱老熟女视频网站97 |