第二周学习笔记

第二周学习笔记

10-17日

  • 今日问题:

  • gcc编译出错,head.找不到文件。
    放弃virtualware:) 重新安装virtualBox

  • 安装VirtualBox不能新建32bit虚拟机
    BIOS界面设置VT为able

  • 今日代码:

head.h
#ifndef HEAD_H
#define HEAD_H
int add(int,int);
int sub(int,int);
int mul(int,int)
double div(int,int);
#endif
add.c:
#include "head.h"
int add(int a,int b)
{
return a+b;
}
sub.c:
#include "head.h"
int sub(int a,int b)
{
return a-b;
}
mul.c:
#include "head.h"
int mul(int a,int b)
{
return  a*b;
}
div.c
#include "head.h"
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("add:%d\n",add(a,b));
printf("sub:%d\n",sub(a,b));
printf("mul:%d\n",mul(a,b));
printf("div:%d\n",div(a,b));
return 0;
}

10月18日

  • 今日问题

-div函数结果始终是0.000000
把div函数里的数值类型改为int型。反正整数的时候是正确结果啦

  • 涉及到的代码如下
head.h
#ifndef HEAD_H
#define HEAD_H
int add(int,int);
int sub(int,int);
int mul(int,int)
int div(int,int);
#endif
div.c
#include "head.h"
int 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("add:%d\n",add(a,b));
printf("sub:%d\n",sub(a,b));
printf("mul:%d\n",mul(a,b));
printf("div:%d\n",div(a,b));
return 0;
}
  • 执行结果如下
sudo apt install gcc
gcc *.c -o 20189208
./20189208
enter two numbers: 24 2
add:26
sub:22
mul:48
div:12
  • gcc 编译
gcc -E main.c -o main20189208.i
gcc -S main20189208.i -o main20189208.s
gcc -C main20189208.s -o main20189208.o
gcc -Og -o prog1 main.c add.c sub.c mul.c div.c
./prog1

10月19日

  • 今日问题:
  • 1.virtualbox不能复制粘贴代码
    修改了i/o为主机并勾选了固态存储还安装了增强功能,终于可以复制了
  • 2.gdb编译出错,main函数内的函数引用全部出错
vim main.c
int main(void)
{int a,b;
printf("enter two numbers:");
scanf("%d %d",&a,&b);
for(int i=0;i<=7;i++)
{
printf("add:%d\n",add(a,b));

printf("sub:%d\n",sub(a,b));
printf("mul:%d\n",mul(a,b));
printf("div:%d\n",div(a,b));
return 0;}
}
gcc -g *.c -o gmain20189208
gdb gmain20189208
(gdb) l
warning: Source file is more recent than executable.
1	int main(void)
2	{
3	int a,b;
4	printf("enter two numbers:");
5	scanf("%d %d",&a,&b);
6	for(int i=0;i<=4604;i++)
7	{
8	printf("add:%d\n",add(a,b));
9	
10	printf("sub:%d\n",sub(a,b));
(gdb) 
11	printf("mul:%d\n",mul(a,b));
12	printf("div:%d\n",div(a,b));
13	return 0;
14	}
15	}
(gdb) b main
Breakpoint 1 at 0x749: file main.c, line 2.
(gdb) b 6 if i==2302
Breakpoint 2 at 0x785: file main.c, line 6.
(gdb) b 6 if i==1
Note: breakpoint 2 also set at pc 0x785.
Breakpoint 3 at 0x785: file main.c, line 6.
(gdb) r
Starting program: /home/ycx/gmain20189208 

  • 静态库
ycx@ycx-VirtualBox:~$ ls
20189208          gmain20189208   main20189208.o  prog1   视频  音乐
add.c             gmian08         main20189208.s  sub.c   图片  桌面
div.c             head.h          main.c          公共的  文档
examples.desktop  main20189208.i  mul.c           模板    下载
ycx@ycx-VirtualBox:~$ gcc -c mul.c add.c sub.c div.c
ycx@ycx-VirtualBox:~$ ls
20189208  div.o             head.h          main.c  sub.c   视频  音乐
add.c     examples.desktop  main20189208.i  mul.c   sub.o   图片  桌面
add.o     gmain20189208     main20189208.o  mul.o   公共的  文档
div.c     gmian08           main20189208.s  prog1   模板    下载
ycx@ycx-VirtualBox:~$ ar rcs  math9208.a add.o sub.o mul.o div.o
ycx@ycx-VirtualBox:~$ ls
20189208  div.o             head.h          main.c      prog1   模板  下载
add.c     examples.desktop  main20189208.i  math9208.a  sub.c   视频  音乐
add.o     gmain20189208     main20189208.o  mul.c       sub.o   图片  桌面
div.c     gmian08           main20189208.s  mul.o       公共的  文档
ycx@ycx-VirtualBox:~$ gcc -c main.c
ycx@ycx-VirtualBox:~$ ls
ycx@ycx-VirtualBox:~$ gcc -static -o prog9208 main.o ./math9208.a
ycx@ycx-VirtualBox:~$ ls
20189208  examples.desktop  main20189208.o  mul.c     sub.o   文档
add.c     gmain20189208     main20189208.s  mul.o     公共的  下载
add.o     gmian08           main.c          prog1     模板    音乐
div.c     head.h            main.o          prog9208  视频    桌面
div.o     main20189208.i    math9208.a      sub.c     图片

  • 共享库
ycx@ycx-VirtualBox:~$ gcc -shared -fpic -o math9208.so add.c sub.c mul.c div.c
ycx@ycx-VirtualBox:~$ gcc -o prog9208_2 main.c ./math9208.so

  • makefile笔记
testmymath:main.o add.o sub.o mul.o div.o
gcc main.o add.o sub.o mul.o div.o -o testmymath
main.o:main.c head.h
gcc -c main.c
testmymath:main.o add.o sub.o mul div.o
gcc main.o add.o sub.o mul.o div.o -o testmymath
main.o:main.c head.h
gcc -c main.c
add.o:add.c head.h
gcc -c add.c
sub.o:sub.c head.h
gcc -c mul.c
div.o:div.c head.h
gcc -c div.c

10月20日

  • makefile执行过程
vim makefile
testmymath:main.o add.o sub.o mul div.o
        gcc main.o add.o sub.o mul.o div.o -o testmath
main.o:main.c head.h
        gcc -c main.c -o main.o
add.o:add.c head.h
        gcc -c add.c -o add.o
sub.o:sub.c head.h
        gcc -c sub.c -o sub.o
mul.o:mul.c head.h
        gcc -c mul.c -o mul.o
div.o:div.c head.h
        gcc -c div.c -o div.o
clean:
        rm -f *.o testmath


ycx@ycx-VirtualBox:~$ make
gcc main.o add.o sub.o mul.o div.o -o testmath
ycx@ycx-VirtualBox:~$ ./testmath
enter two numbers:24 2
add:26
sub:22
mul:48
div:12

10月21日

我的how computer works 笔记

实验楼截图在笔记末尾
完成作业:)

posted @ 2018-10-21 19:11  假的课代表  阅读(145)  评论(1编辑  收藏  举报