gcc在编译器的各类用途
一、用gcc生成.a静态库和.so动态库
1、创建目录work,编辑程序one.c,two.c,all.h以及main.c
创建文件夹:mkdir;然后用nano编辑one.c,two.c,all.h,main.c文件
2、将.c文件编译成.o文件
1、将one.c文件编译为one.o文件
gcc -c one.c
2、将two.c文件编译为two.o文件
gcc -c two.c
3、将main.c文件编译为main.o文件
gcc -c main.c
执行ls命令,产生了.o文件,表明编译完成
3、由.o文件创建静态库
ar -crv libzxw.a one.o two.o
ls命令结果中有libzxw.a
4、用gcc将main函数的目标文件与静态库相链接
在程序中使用静态库
gcc -o all main.c -L. -lqwe
执行./all,显示程序运算结果
5、由.o文件创建动态库文件
gcc -shared -fPIC -o liball.so main.o
6、在程序中使用动态库文件
获取root权限,将文件复制到/usr/lib目录中
root权限获取方法可参照下面方式:
链接: Ubuntu下如何将普通用户提升到root权限.
重新创建静态库文件与动态库文件
结果运行
由静态库链接的文件大小为7.6kb
由动态库链接的文件大小为1.6kb
静态库的代码在编译过程中已经被载入可执行程序,因此体积较大;动态库的代码是在可执行程序运行时才载入内存的,在编译过程中仅仅是简单的引用,因此代码体积较小。

二、gcc编译工具的各类用途
1、安装nasm并编译"hello world"
在Ubuntu下安装nasm
sudo apt install nasm
,输入前面所设置root权限的密码,敲下回车键进行安装
创建目录test0;然后使用nano文本编辑器生成一个hello.c程序
程序代码示例:
创建目录,编辑.c文件:
用gcc对.c进行简单编译:
一步到位编译指令:gcc test0.c -o test0
预处理:gcc -E test0.c -o test0.i
编译为汇编代码:gcc -S test0.i -o test0.s
汇编:gcc -c test0.s -o test0.o
连接:gcc -c test0.o -o testo
在命令窗口中,执行./test0
, 显示hello world
用binutils的size命令查看可执行文件大小:
2、编译hello.asm
用nasm编译hello.asm文件(ubuntu为64位)
nasm -felf64 hello.asm
执行./hello
显示结果:hello world
三 、程序背后的优秀代码库
1、Linux 系统中终端程序最常用的光标库(curses)的几个主要函数名称与功能
move(y,x);将光标移动至(x,y)处;
refresh();我们写入的内容首先会在系统缓冲区中,经过refresh()函数刷新之后才能够显示到屏幕上;
echo()和noecho();输入的字符显示和不显示在终端上;
getch();输入一个字符;
getstr();输入一串字符串;
scanw("%s",s);;按指定格式输入内容,类似于scanf();
mvaddstr();移动到某个位置输入…
如果想清楚更多的相关函数,可参考下面链接
1、: Linux下curses库的基本操作.
2、: Linux - curses函数库.
2、以游客身份体验BBS
在 Windows系统中,“控制面板”–>“程序”—>“启用或关闭Windows功能”,启用 “telnet client” 和"适用于Linux的Windows子系统"。 然后打开一个cmd命令行窗口,命令行输入 telnet bbs.newsmth.net
输入命令,出现如下界面:
随意输入代号,出现错误,无法连接
至此结束,如果想了解更多详情,可以百度查阅相关资料。
3、在Ubuntu中用 sudo apt-get install libncurses5-dev 安装curses库
输入指令:sudo apt-get install libncurses5-dev
,敲击回车键
查找curses的头文件.h
与库文件.so
,.a
输入查找指令:
头文件:whereis curses.h
库文件:whereis curses.*
4、用gcc编译终端游戏——贪吃蛇
链接: 贪吃蛇.
在gcc编译游戏前,我们需要在q.c文件中加入贪吃蛇游戏源代码;为图方便,我们可以选择复制粘贴。
下面,我们解决主机复制文本不能粘贴在虚拟机上的问题
在Ubuntu的命令行终端中执行以下命令:
sudo apt-get autoremove open-vm-tools
sudo apt-get install open-vm-tools
sudo apt-get install open-vm-tools-desktop
安装完成后,选择重启此虚拟机,即可进行复制粘贴啦
1、创建文件,用nano编辑器编辑q.c
2、编译并运行q.c
用此指令编译gcc q.c -lcurses -o q
,./q运行q.c
3、运行结果界面
四、总结与参考资料
1、总结
通过对编译器后面故事的了解,懂得如何使用gcc生成库文件(.a,.so),
用.o文件连接静(动)态库,以及它们在程序中的使用方法等;用gcc编译终端游戏,体会curses库是怎么被链接和使用的。在此过程中,也遇到了不少问题,基本都自己解决了。希望此作品对你有所帮助。
2、参考资料
1、 用gcc生成静态库和动态库.
2、 Linux GCC常用命令.
3、 静态库.a与.so库文件的生成与使用.
4、 GCC编译器背后的故事.