编译器背后的故事

编译器背后的故事

1.gcc生成静态库和动态库

1.创建目录文件
mkdiir test1
cd test1
用自己的熟悉编辑器编写三个文件
源程序hello.c
在这里插入图片描述

头文件hello.h
在这里插入图片描述

主程序mian.c
在这里插入图片描述2.将hello.c编译成.o文件。
在这里插入图片描述3.由.o文件创建静态库
在这里插入图片描述4.在程序中使用静态库
在这里插入图片描述5.由.o文件创建动态库文件
在这里插入图片描述6.在程序中使用动态库在这里插入图片描述
程序报错找不到libmyhello.so,此时需要将libmyhello.so添加到/usr/lib中
在这里插入图片描述一开始权限不够,可以使用sudo命令提高权限
7.删除掉后面加的文件,重新创建文件libmyhello.a和动态库文件libmyhello.so
在这里插入图片描述再来重新创建静态库文件和动态库文件
在这里插入图片描述生成目录文件hello并运行
在这里插入图片描述

2.静态库.a与.so库文件的生成与使用

1.生成四个文件A1.c A2.c A.h test.c
在这里插入图片描述

A1.c
在这里插入图片描述

A2.c在这里插入图片描述A.h
在这里插入图片描述test.c
在这里插入图片描述2.生成目标文件
在这里插入图片描述生成静态库文件
在这里插入图片描述3.共享库.so文件的生成与使用
在这里插入图片描述

3.gcc编译器背后的故事

1.创建test0文件,在其下编写一个hello.c文件
在这里插入图片描述2.将hello.c文件预处理为hello.i文件
在这里插入图片描述3.将hello.i文件编译生成汇编程序hello.s
在这里插入图片描述

hello.s程序
在这里插入图片描述4.将hello.s程序汇编为目标文件hello.o
在这里插入图片描述

4.下载安装nasm汇编编译器

1.在ubuntu中下载nasm
在这里插入图片描述2.运行hello.asm
在这里插入图片描述hello.asm
在这里插入图片描述

5.关于curse及其安装

1.curse常用函数
initscr(): initscr() 是一般 curses 程式必须先呼叫的函数, 一但这个函数被呼叫之后, 系统将根据终端机的形态并启动 curses 模式.
endwin(): curses 通常以呼叫 endwin() 来结束程式. endwin() 可用来关闭curses 模式, 或是暂时的跳离 curses 模式. 最后再以wrefresh() doupdate() 来重返 curses 模式.
cbreak() and nocbreak(): 当 cbreak 模式被开启后, 除了 DELETE 或 CTRL 等仍被视为特殊控制字元外一切输入的字元将立刻被一一读取.当处于 nocbreak 模式时, 从键盘输入的字元将被储存在 buffer 里直到输入 RETURN或 NEWLINE.
nl() and nonl(): 用来决定当输入资料时, 按下 RETURN 键是否被对应为 NEWLINE 字元 ( 如 /n ). 而输出资料时, NEWLINE 字元是否被对应为 RETURN 和 LINDFEED系统预设是开启的.
echo() and noecho(): 此函式用来控制从键盘输入字元时是否将字元显示在终端机上.系统预设是开启的.
intrflush(win,bf): 呼叫 intrflush 时须传入两个值, win 为一 WINDOW 型态指标, 通常传入标准输出入萤幕 stdscr. bf 为 TRUE 或 FALSE. 当 bf 为 true 时, 当输入中断字元 ( 如 break) 时, 中断的反应将较为快速.但可能会造成萤幕的错乱.
keypad(win,bf): 呼叫 keypad 时须传入两个值, win 为一 WINDOW 型态指标, 通常传入标准输出入萤幕 stdscr. bf 为 TRUE 或 FALSE. 当开启 keypad后, 可以使用键盘上的一些特殊字元, 如上下左右>等方向键, curses 会将这些特殊字元转换成
curses.h 内定义的一些特殊键. 这些定义的特殊键通常以 KEY_ 开头.
refresh(): refresh() 为 curses 最常呼叫的一个函式. curses 为了使萤幕输出入达最佳化, 当您呼叫萤幕输出函式企图改变萤幕上的画面时, curses 并不会立刻对萤幕做改变, 而是等到refresh() 呼叫后, 才将刚才所做的变动一次完成. 其余的资料将维持不变. 以尽可能送最少的字元至萤幕上. 减少萤幕重绘的时间.如果是 initscr() 后第一次呼叫 refresh(), curses 将做清除萤幕的工作.
2.curse安装
在这里插入图片描述curses函数库的头文件和库文件被分别安装在/usr/include/和/usr/lib/下

6.简单游戏开发

贪吃蛇
建立文件编译
在这里插入图片描述程序
在这里插入图片描述运行效果
在这里插入图片描述愉快的编译器探寻之旅就到此结束。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值