Linux_静态库&&动态库

PV操作输出完整的cute或者shuai

#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <sys/wait.h>
#include <sys/ipc.h>
#include <sys/sem.h>

union semun{int val;};

int main()
{
    int id = semctl(1234, 1,IPC_CREAT|0644);
    union semun su = {1};
    semctl(id,1,SETVAL,su);
    pid_t pid = fork();
    if(pid == 0)
    {
        int i;
        for(i=0;i<5;i++)
        {
            P(id);
            printf("cu");
            sleep(1);
            printf("te\n");
            V(id);
            sleep(1);
        }
    }
    else
    {
        int i;
        for(i=0;i<5;i++)
        {
            P(id);
            printf("sh");
            sleep(1);
            printf("uai\n");
            V(id);
        }
        wait(NULL);
    }
    exit(0);
}

静态库
创建一个PV.c文件

#include <stdio.h>
#include <sys/sem.h>

void P(int id)
{
    struct sembuf buf[1] = {{0, -1, 0}};
    semop(id, buf, 1);
}

void V(int id)
{
    struct sembuf buf[1] = {{0, -1, 0}};
    semop(id, buf, 0);
}

命令:
gcc -c PV.c
ar -rc libPV.a PV.o

使用静态库:
gcc cuteshuai.c libPV.o -o cuteshuai

动态库

命令:
gcc PV.c -fPIC -shared -o libmyPV.so

使用动态库:
gcc cuteshuai.c -L. lmyPV -o cuteshuai
ldd cuteshuai 命令可以查看动态库挂载情况
动态库没存在默认路径可能会找不到动态库

三种挂载方法
1.把动态库复制到默认路径:cp libmyPV.so /lib64
2.把动态库路径写入ldconfig: vim /etc/ld.so.conf.d/30.conf
3.修改环境变量:export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:.
重启后会该变量会恢复

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值