安装gcc
- 自行搜索引擎
认识动态链接库
- so文件
认识几个文件夹
- /usr/bin:存放系统的可执行文件的地方
- /lib、/lib64(如果有):内核级公共类库文件夹
- /usr/lib、/usr/lib64(如果有):用户系统级公共类库文件夹
撸一个hello world执行程序
> cd ~ #其实随便一个目录
> vim hahaha.c #创建hahaha.c
#include <stdio.h> int main() { char ch[]="world"; printf("hello,%s!\n", ch); return 0; }
> gcc hahahha.c -o hahaha #编译C文件
> ls -al #查看当前文件夹是否有hahaha的可执行程序
> ./hahaha #执行可执行程序
hello world! #输出了这么一串文字
> mv ./hahaha /usr/bin
> hahaha #注意跟 ./hahaha 有区别
hello world! #输出了这么一串文字
撸一个makefile,并用make编译
> cd ~ #main文件所在目录
> vim makefile #创建makefile
hahaha:hahaha.c gcc hahaha.c -o hahaha
> make #通过makefile编译
> ls -al #查看当前文件夹是否有hahaha的可执行程序
> ./hahaha #执行可执行程序
hello world! #输出了这么一串文字
> mv ./hahaha /usr/bin > y #是覆盖
> hahaha #注意跟 ./hahaha 有区别
撸一个so(动态链接库)文件,并在main引用
> cd ~ #其实随便一个目录
> vim wocao.h #创建wocao.h
int wocao();
> vim wocao.c #创建wocao.c
int wocao() { return 333; }
> gcc -shared wocao.c -o libwocao.so # 创建个so文件,注意输出的可执行文件是lib开头
> ls -al #查看当前文件夹有哪些文件
> mv libwocao.so /usr/lib/ #移动文件到公共库中
> vim hahaha.c #编辑hahaha.c,引入依赖
#include <stdio.h> int main() { int wocao = wocao();//来自wocao.so char ch[]="world"; printf("hello %s,%d!\n", ch,wocao); return 0; }
> vim makefile #编辑makefile,给main添加依赖
hahaha:hahaha.c rm -f /usr/bin/hahaha gcc -L /usr/lib/ -l wocao hahaha.c -o hahaha install: mv ./hahaha /usr/bin/ ldconfig
> make && make install #编译,并通过make insall指令执行install的脚本
> hahaha #执行可执行程序
hello world,333! #输出了这么一串文字
一起编译,并安装到指定目录下
> vim makefile #编辑makefile
hahaha:hahaha.c libwocao.so rm -f /usr/bin/hahaha gcc -L ./ -l wocao hahaha.c -o hahaha libwocao.so:wocao.c gcc -shared -o libwocao.so wocao.c install: mv ./hahaha /usr/bin/ rm -rf /usr/lib/hahaha/ && mkdir -p /usr/lib/>> hahaha/ && mv ./libwocao.so /usr/lib/hahaha/ rm -f /etc/ld.so.conf/hahaha.conf && \cp ./>> hahaha.conf /etc/ld.so.conf.d/hahaha.conf ldconfig
> make && install #编译并安装