csdn_export_md

一、静态库与动态库文件的生成和使用

1、利用gcc生成静态库和动态库

1、编辑生成例子程序
(1)先创建一个作业目录,保存本次练习的文件
在这里插入图片描述
 

然后用 vim编辑生成所需要的 3 个文件
在这里插入图片描述

程序 1: hello.h

#ifndef HELLO_H
#define HELLO_H
void hello(const char *name);
#endif //HELLO_H

程序 2: hello.c

#include <stdio.h>
void hello(const char *name)
{
printf("Hello %s!\n", name);
}

程序 3: main.c

#include "hello.h"
int main()
{
hello("everyone");
return 0;
}

 

(2)接着将 hello.c 编译成.o 文件
在这里插入图片描述
在 ls 命令结果中,我们看到了 hello.o 文件,本步操作完成。

 

(3)由.o 文件创建静态库

在这里插入图片描述
 

(4)在程序中使用静态库
在这里插入图片描述
在这里插入图片描述

 

(5)由.o 文件创建动态库文件。
在这里插入图片描述
这一步出现错误,导致无法建立动态库文件。(后来找到找到解决方法)
在这里插入图片描述
(6)在程序中使用动态库
在这里插入图片描述
出现问题,无法是找不到动态库文件 libmyhello.so。将文件 libmyhello.so 复制到目录/usr/lib 中,结果提示权限不足。
在这里插入图片描述
利用sudo命令以管理员权限执行命令,成功运行。

 


2、在第一次作业的程序代码基础进行改编,扩展写一个x2y函数

(1)建立sub2.c
在这里插入图片描述
(2)编写代码
在这里插入图片描述

(3)修改main1.c
在这里插入图片描述
在这里插入图片描述
(4)用gcc生成3个.o 目标文件
在这里插入图片描述
(5)创建静态库文件
在这里插入图片描述
(6)用 gcc将main函数的目标文件与此静态库文件进行链接
在这里插入图片描述
(7)运行程序
在这里插入图片描述
(8)在文件夹中查看main1的大小
在这里插入图片描述

(9)建立动态库文件
在这里插入图片描述
(10)连接动态库
在这里插入图片描述
(11)运行maina
在这里插入图片描述
(12)在文件夹中查看maina的大小
在这里插入图片描述
经比较,发现maina文件的大小比main1的少了40字节,于是得出结论:静态库最后生成的执行文件要比动态库的要大

 


二、gcc编译工的常用命令操作及as汇编编译器的操作

1、Linux GCC常用命令

(1)新建hello.c
在这里插入图片描述
(2)编写程序
在这里插入图片描述
(3)编译
在这里插入图片描述
(4)预处理
在这里插入图片描述

(5)编译为汇编语言
在这里插入图片描述

(6)汇编
在这里插入图片描述

(7)链接
在这里插入图片描述

(10)运行程序
在这里插入图片描述

 


2、as汇编编辑器

(1)在ubutu中安装nasm
在这里插入图片描述
(2)创建asm文件
在这里插入图片描述

(3)编程
在这里插入图片描述
(5)编译
在这里插入图片描述
(6)生成可执行文件并运行

在这里插入图片描述
(7)比较可执行文件的大小

在这里插入图片描述
在这里插入图片描述
经比较,发现asm汇编生成的文件比.c文件生成的可执行文件小

 


三、利用第三方库函数来完成设计

1、常用的光标库(curses)的主要函数功能

函数函数功能
initscr()打开curses模式 进入终端
endwin()关闭窗口stdscr
cbreak()接受单个字符处理 禁止行缓冲
echo()显示字符
noecho()关闭回显 让键盘输入字符 不显示在终端上
keypad(WINDOW *, bool)指定窗口 激活功能键 上下左右 F1 F2等
start_color()打开color模式
scroll()指定窗口 接受字符 超过一行自动写入下一行
move(y,x)将游标移至x,y位置
addch(ch)在当前位置画字符ch

 


2、体验一远古时代的BBS

(1)打开控制面板,点击“程序”,点击“启用或关闭Windows功能”
在这里插入图片描述

(2)点击’telnet client’和‘适用于Linux的Windows子系统’
在这里插入图片描述
(3)打开cmd并输入telnet bbs.newsmth.net
在这里插入图片描述
访问界面如下:
在这里插入图片描述

 


3、安装curses库

(1)输入sudo apt-get install libncurses5-dev安装curses库
在这里插入图片描述
其中头文件和库文件分别安装在/usr/include/和/usr/lib/中。

 


4、Linux 环境下C语言编译实现贪吃蛇游戏

(1)建立一个snake.c文件
在这里插入图片描述

(2)编程
在这里插入图片描述

由于代码过长,只展示部分代码,完整代码参考下面网站

Linux 环境下C语言编译实现贪吃蛇游戏

(3)编译
在这里插入图片描述

(4)运行程序
在这里插入图片描述
其中为贪吃蛇,@为目标

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值