20155233劉高樂 第二週課堂實踐以及MyOD

1. 除了main.c外,其餘4個模塊(add.c sub.c mul.c div.c)的源代碼不想給別人,如何製做一個mymath.so共享庫?main.c如何使用mymath.so?

2. 提交共享庫生成和調用過程截圖(必定包含條件斷點的),要全屏,包含本身的學號信息

*************課下把代碼推送到代碼託管平臺***************linux

答案:

1.在命令行輸入gcc -shared -fpic -o libv20155233.so 20155233sub.c 20155233add.c 20155233mul.c 20155233div.c
2.輸入gcc -o libv20155233 20155233main.c ./libv20155233.so
3.完成後就能夠運行./libv20155233
4.具體嘗試以下圖:
vim

1. 用gcc -g編譯vi輸入的代碼

2. 在main函數中設置一個行斷點

3. 在main函數增長一個空循環,循環次數爲本身學號後4位,設置一個約爲學號一半的條件斷點

3. 提交調試過程截圖(必定包含條件斷點的),要全屏,包含本身的學號信息

*************課下把代碼推送到代碼託管平臺***************函數

答案:

1.首先,輸入gcc 20155233main.c 20155233add.c 20155233sub.c 20155233div.c 20155233mul.c -g -o text
2.其次,輸入cgdb text進入調試界面
3.調試程序以下:
測試

第二週測試6-Makefile

1 寫出編譯上面vi編輯代碼的makefile,編譯出來的目標文件爲testmymath, 只用顯式規則就能夠.命令行

2 提交Make過程截圖,要全屏,包含本身的學號信息3d

*************課下把Makefile推送到代碼託管平臺***************調試

答案:

  • 1.命令行輸入vim Makefile,編輯如下內容(注意Tab的使用):
  • 2.保存退出後命令行輸入make,以後輸入./testmymath運行,以下圖:

1 複習c文件處理內容

2 編寫myod.c 用myod XXX實現Linux下od -tx -tc XXX的功能

3. main與其餘分開,製做靜態庫和動態庫

4. 編寫Makefile

5 提交測試代碼和運行結果截圖, 提交調試過程截圖,要全屏,包含本身的學號信息

6 在博客園發表一篇博客,重點寫遇到的問題和解決過程

答案:

  • 1.代碼實現:
#include<stdio.h>
void main(){

    char filename[50];
    printf("please input file's name;\n");
    scanf("%s",filename);
    ascii(filename);
    change(filename);

}
void ascii(char *filename)
{FILE *fp;
char ch;
   fp=fopen(filename,"r");
    ch=fgetc(fp);
printf("ascii碼輸出爲:\n");
    while(ch!=EOF)
    {if(ch=='\n') printf("\n");
        else printf("%4d",ch);
        ch=fgetc(fp);
    }
}
void change(char *filename)
{
FILE *fp;
char ch;
    printf("16進制輸出爲:\n");
    fp=fopen(filename,"r");
        ch=fgetc(fp);
    while(ch!=EOF)
    {
if(ch=='\n') printf("\n");
        else printf("%4x",ch);
        ch=fgetc(fp);
    }
    fclose(fp);
}

截圖展現

  • 2.實現方法:ascii值輸出是將%c輸出轉換爲%d輸出,十六進制輸出是將%c輸出轉換爲%x輸出。
  • 3.靜態庫製做以下圖:
    code

  • 4.動態庫製做以下圖:
    blog

  • 5.makefile文件製做以下圖:
    (1)首先,輸入vim Makefile,編輯如下內容:

    (2)其次,輸入如下命令執行文件:
    ci

相關文章
相關標籤/搜索