• Linux下制作静(动)态库


    关键命令:

    动态库制作命令

    gcc xxx.c -fPIC -shared -o libxxx.so

    静态库制作命令

    gcc -c xxx.c

    ar crv libxxx.a xxx.o

    例:

    //hello.h
    #ifndef HELLO_H
    #define HELLO_H
    void hello(const char * name);
    #endif
    
    
    
    //hello.c
    #include<stdio.h>
    void hello(const char * name)
    {
      printf("hello %s!
    ",name);
    }
    
    //test.c
    #include<stdio.h>
    #include"hello.h"
    int mian()
    {
     hello("csk");
     return 0;
    }

    一、将hello.c 编译成静态库

    gcc -c hello.c //生成hello.o文件

    ar -rcv libhello.a hello.o //生成静态库

    gcc -o hello test.c -L. -lhello //链接静态库将test.c文件编译生成可执行文件hello

    ./hello //执行

    二、将hello.c编译生成动态库

    gcc hello.c -fPIC -shared -o libhello.so //生成动态库

    gcc -o hello test.c -L. -lhello //链接动态库将test.c文件编译生成可执行文件hello

    export LD_LIBRARY_PATH=$(pwd) 或者ldconfig "目录名" (当前文件所在的目录)

    ./hello //执行

    使用Makefile 编译动态库

    # 1、准备工作,编译方式、目标文件名、依赖库路径的定义。
    CC = gcc
    CFLAGS  := -Wall -O3 -std=c++0x 
    
    OBJS = hello.o #.o文件与.cpp文件同名
    LIB = libhello.so # 目标文件名 
    # 2. 生成.o文件 
    %.o : %.cpp
        $(CC) $(CFLAGS) -fpic -c $< -o $@ 
    
    # 3. 生成动态库文件
    $(LIB) : $(OBJS)
        rm -f $@
        $(CC) -shared -o $@ $(OBJS)
        rm -f $(OBJS)
    
    # 4. 删除中间过程生成的文件 
    clean:
        rm -f $(OBJS) $(LIB)

    使用Makefile 编译静态库

    # 1、准备工作,编译方式、目标文件名、依赖库路径的定义。
    CC = gcc
    CFLAGS  := -Wall -O2 -std=c++0x 
    
     
    
    OBJS = hello.o #.o文件与.cpp文件同名
    LIB = libhello.a # 目标文件名 
    
    
    # 2. 生成.o文件 
    %.o : %.cpp
        $(CC) $(CFLAGS) -c $< -o $@ 
    
    # 3. 生成静态库文件
    $(LIB) : $(OBJS)
        rm -f $@
        ar cr $@ $(OBJS)
        rm -f $(OBJS)
    
    # 4. 删除中间过程生成的文件 
    clean:
        rm -f $(OBJS)$(LIB)
    海阔凭鱼跃,天高任鸟飞。
  • 相关阅读:
    idea 配置 maven 项目
    idea 配置普通web项目
    idea java.lang.OutOfMemoryError: PermGen space
    idea checkout 项目
    物理机自动化装机实现
    prometheus node_exporter相关监控指标
    nginx Linux内核参数的优化
    《高性能 Go 代码工坊》中译
    docker仓库资源的地址修改
    influxdb-1.7.8(centos 7) 部署
  • 原文地址:https://www.cnblogs.com/chenshikun/p/6093712.html
Copyright © 2020-2023  润新知