一、重学linux,用make、makefile、make install撸一个执行程序,以及引用so文件

安装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 #编译并安装
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值