文章目录
附
一.可执行程序是如何被组装的
1. gcc生成静态库/动态库
进入linux终端,先建立一个作业目录test1,如下图
然后用vim写如下代码
//hello.c
#include <stdio.h>
void hello(const char *name)
{
printf("Hello %s!\n",name);
}
//hello.h
#ifndef HELLO_H
#define HELLO_H
void hello(const char *name);
#endif //HELLO_H
//main.c
#include "hello.h"
int main()
{
hello("everyone");
return 0;
}
由.o文件生成静态库libmyhello.a,如下图
由.o文件创建动态库libmyhello.so,如下图
2. 静态库文件链接(实践)
已建好3个文件main.c,sub1.c,sub2.c
//main.c
#include <stdio.h>
#include "sub1.c"
#include "sub2.c"
int main()
{
int a = 3;
int b = 5;
float c;
float d;
c = x2x(a, b);
d = x2y(a, b);
printf("%f \n", c);
printf("%f \n", d);
return 0;
}
//sub1.c
#include <stdio.h>
float x2x(int a, int b)
{
float c;
c = a + b;
return c;
}
//sub2.c
#include <stdio.h>
float x2y(int a, int b)
{
float d;
d = a - b;
return d;
}
用gcc编译为.o文件
将x2x、x2y目标文件用 ar工具生成1个 .a 静态库文件libsub.a
main函数与此静态库文件进行链接,并运行main文件,正确
main文件大小如下
3. 动态库文件链接(实践)
创建动态库文件libsub.so
将main函数与此动态库文件进行链接,并运行main1文件,正确
main1文件大小如下,并与main文件比较,两者一样大
二、gcc编译工具
1. gcc常用命令
创建一个文件夹testgcc,写一个简单程序test,一步到位编译如下
实质上分为四个过程,如下
1.预处理(.i文件)
gcc -E test.c -o test.i
2. 编译为汇编代码(.s文件)
3. 汇编为目标文件(.o文件)
4. 连接
三、程序借助第三方库设计代码
1. Linux 系统中光标库(curses)主要函数功能了解
初始化和重置函数:
所有curses程序必须以initscr函数开始,以endwin函数结束。
管理屏幕的函数:
在curses程序中输出字符的过程如下所示
(1):使用curses函数刷新逻辑屏幕。
(2):要求curses用refresh函数来刷新物理屏幕。 管理窗口的函数 curses函数库支持在一个物理屏幕上显示多个窗口
详细请参考此网站
2. win10下体验BBS
在 win10 系统中,“控制面板”–>“程序”—>“启用或关闭Windows功能”,启用 “telnet client” 和"适用于Linux的Windows子系统"
然后需要重启电脑
下一步打开一个cmd命令行窗口,命令行输入 telnet bbs.newsmth.net
3. Ubuntu中安装curses库
安装
ubuntu11.10下默认没有安装curses函数库,(CentOS下默认已经安装,可以直接在usr/include下查看是否有该头文件来确定)使用
>sudo apt-get install ncurses-dev
安装curses库,这样在curses函数库的头文件和库文件就被分别安装在/usr/include/和/usr/lib/下,在编译程序时,直接使用命令:
gcc program.c -o program -lcurses
完成编译,运行。
curses函数库头文件安装位置:/usr/include/
curses函数库库文件安装位置:/usr/lib/