第二周学习笔记
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 笔记