20155334 9月27日課堂檢測補交

2022-05-02 02:57:06 字數 2442 閱讀 9067

今天的課堂檢測一共有五項,分別是vi測試、gcc測試、gdb測試、靜態庫的測試、共享庫的測試。由於自己的學習不到位,導致有最後兩個沒有完成,特別在此加以補做。

對之前完成的三個檢測,我學到了一些新知識:

gcc *.c:將當前資料夾裡的所有.c 檔案進行整體編譯,編譯後的檔名預設為a.out

1. 除了main.c外,其他4個模組(add.c sub.c mul.c div.c)的源**不想給別人,如何製作乙個mymath.a靜態庫?main.c如何使用mymath.a?

2. 提交靜態庫生成和呼叫過程截圖,要全屏,包含自己的學號資訊

step 1:建立靜態庫:
linux> gcc -c addvec.c multvec.c

linux> ar rcs libvector.a addvec.o multvec.o

對這兩行命令的理解我也是通過scdn部落格中一篇名為《linux命令之ar - 建立靜態庫.a檔案》中找到了比較詳盡的解釋:

使用gcc -c ···.c ···.c ···.c把要將建立的靜態庫所包含的.c檔案編譯為.o檔案。

使用ar rcs ···.a ···.o ···.o ···.o由以上編譯出來的.o檔案建立靜態庫。(在我自己的操作中根據題意命名為mymath)

step 2 :建立可執行檔案(即在在程式中使用靜態庫)

因為是靜態編譯,生成的執行檔案可以獨立於.a檔案執行。

gcc -c main.c

gcc -static -o ··· main.o ./···.a

通過以上的兩行命令將建立的.a檔案鏈結到main.o上,建立出乙個可直接執行的檔案(在我自己的操作中命名為prog4c)

自己動手操作後的結果:

2. 動態庫測試:

1. 除了main.c外,其他4個模組(add.c sub.c mul.c div.c)的源**不想給別人,如何製作乙個mymath.so共享庫?main.c如何使用mymath.so?

2. 提交共享庫生成和呼叫過程截圖,要全屏,包含自己的學號資訊

step 1:建立動態庫:
linux> gcc -shared -fpic -o libvector.so addvec.c multvec.c
對這行命令的理解:使用gcc -shared -fpic -o ···.so ···.c ···.c建立了乙個共享的目標檔案

step 2 :建立可執行檔案(即在在程式中使用動態庫)

linux> gcc -o prog21 main2.c ./libvector.so
使用gcc -o ··· main.c ./···建立了乙個可執行的檔案(在我自己的操作中命名為prog4s)

自己動手操作後的結果:

step 1:

step 2:

對於makefile我的腦海中可以說是一片空白,什麼都不知道,多虧我們生長在乙個技術發達、知識大**的年代,通過查詢ruglcc的部落格我知道了

第一:makefile的

makefile定義了一系列的規則來指定,哪些檔案需要先編譯,哪些檔案需要後編譯,哪些檔案需要重新編譯,甚至於進行更複雜的功能操作,因為makefile就像乙個shell指令碼一樣,其中也可以執行作業系統的命令。makefile帶來的好處就是——「自動化編譯」,一旦寫好,只需要乙個make命令,整個工程完全自動編譯,極大的提高了軟體開發的效率。
1.如果這個工程沒有編譯過,那麼我們的所有c檔案都要編譯並被鏈結。

2.如果這個工程的某幾個c檔案被修改,那麼我們只編譯被修改的c檔案,並鏈結目標程式。

3.如果這個工程的標頭檔案被改變了,那麼我們需要編譯引用了這幾個標頭檔案的c檔案,並鏈結目標程式。

流程:

利用vim編寫makefile:

使用make將編寫好的檔案進行編譯

執行編譯好的檔案(5334test)

**託管連線

**託管連線

感想:通過這次的補交作業讓我真真切切的體會到了實踐出真知的道理,面對之前毫無頭緒的問題,怨天尤人是無濟於事的,只有腳踏實地的去一步一步的操作,一點點的查漏補缺才能真正的掌握它。

3月27日 題解

基本思路就模擬整個過程,每次進行兩兩比較,贏得一分,輸了的就不管。sort其實就是快速排序,而快速排序其實就是二分的思想 穩定的話o nlogn 左右。但是仔細想想此題 每次需要更新的值,都是相鄰兩個人變化後的分數 而相鄰的分數,有些是不會改變位置的,而快速排序則是每次全部修改,必然會造成浪費。雖然...

11月27日總結

函式 返回值 描述 abs x 返回數字的絕對值,如abs 10 返回 10 ceil x 返回數字的上入整數,如math.ceil 4.1 返回 5 cmp x,y 如果 x y 返回 1,如果 x y 返回 0,如果 x y 返回 1。python 3 已廢棄,使用 x y x exp x 返回...

10月27日總結

pandas 提供了多種將 series dataframe 物件組合在一起的功能,用索引與關聯代數功能的多種設定邏輯可執行連線 join 與合併 merge 操作。詳見合併 opens new window concat opens new window 用於連線 pandas 物件 in 73 ...