雲班課上的作業


1-vi .c文件 .h文件
本實驗的過程在test/test4中:
代碼:
20199302.h

ifndef HEAD_H

define HEAD_H

int add(int,int);
int sub(int,int);
int mul(int,int);
double div(int,int);

endif

sub.c

include "20199302.h"

int sub(int a,int b)
{
return a-b;
}

add.c

include "20199302.h"

int add(int a,int b)
{
return a+b;
}

mul.c

include "20199302.h"

int mul(int a,int b)
{
return a*b;
}

div.c

include "20199302.c"

double div(int a,int b)
{
return a/b;
}

main.c

int main(void)
{
int a,b;
printf("enter two numbers:");
scanf("%d %d",&a,&b);
printf("sub:%d\n",add(a,b));
printf("sub:%d\n",sub(a,b));
printf("mul:%d\n",mul(a,b));
printf("div:%lf\n",div(a,b));
return 0;
}

編譯:

出錯,引用了錯誤的文件,應該改為.h,改正

編譯成功:

執行結果中除法有問題,但是代碼沒有問題,所以不知道是什么原因,如下圖所示:

vi-2

GCC編譯流程
預處理,頭文件和宏定義:gcc -E 20199302.c -o 20199302.i

編譯階段,將代碼翻譯成匯編語言:gcc -S 20199302.i -o 20199302.s

匯編階段,將.s文件轉成目標文件,二進制目標代碼 gcc -c 20199302.s -o 20199302.o

最后一步

vi-3

  1. 用gcc -g編譯vi輸入的代碼
  2. 在main函數中設置一個行斷點
  3. 在main函數增加一個空循環,循環次數為自己學號后4位,設置一個約為學號一半的條件斷點
  4. 提交調試過程截圖(一定包含條件斷點的),要全屏,包含自己的學號信息
    gcc -g hello.c -o main
    Gdb main
    b num
    b 行數 if 表達式
    r
    q

vi-4

  1. 除了main.c外,其他4個模塊(add.c sub.c mul.c div.c)的源代碼不想給別人,如何制作一個mymath.a靜態庫?main.c如何使用mymath.a?
  2. 提交靜態庫生成和調用過程截圖(一定包含條件斷點的),要全屏,包含自己的學號信息

靜態庫是一系列的目標文件(.o文件)的歸檔文件((lib+name).a文件);鏈接階段,選擇靜態庫,后綴名為“.a”,選擇動態庫,后綴名為“.so”。
靜態鏈接庫的生成:gcc -c 文件名.c ar rcsv libxxx.a xxx.o;
靜態庫的使用:gcc -o 文件名 文件名.c -L. -lxxx

生成mymath.a靜態庫

使用mymath.a

vi-5 1. 除了main.c外,其他4個模塊(add.c sub.c mul.c div.c)的源代碼不想給別人,如何制作一個mymath.so共享庫?main.c如何使用mymath.so?
2. 提交共享庫生成和調用過程截圖(一定包含條件斷點的),要全屏,包含自己的學號信息

vi-6
1 寫出編譯上面vi編輯代碼的makefile,編譯出來的目標文件為testmymath, 只用顯式規則就可以.
2 提交Make過程截圖,要全屏,包含自己的學號信息
首先寫makefile

testmymath:main.o add.o sub.o mul.o div.o
gcc mian.o add.o sub.o mul.o div.o -o testmymath
main.o:main.c 20199302.h
gcc -c main.c -o main.o
add.o:add.c 20199302.h
gcc -c add.c -o add.o
sub.o:sub.c 20199302.h
gcc -c sub.c -o sub.o
mul.o:mul.c 20199302.h
gcc -c mul.c -o mul.o
div.o:div.c 20199302.h
gcc -c div.c -o div.o
clean:
rm -f *.o testmymath


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM