zoukankan      html  css  js  c++  java
  • 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)
    海阔凭鱼跃,天高任鸟飞。
  • 相关阅读:
    canvas学习-----1px线条模糊问题
    canvas学习-----画直线
    关于开发的一些流程和个人理解
    vue+vue-cli+vuex+vrouter 开发学习和总结
    mac下配置Apache虚拟域名方案,以及遇到的坑
    添加js,css 版本号?v= hash
    webstorm 格式化代码及常用快捷键
    vue+webpack 遇到的问题总结
    vue.js的devtools安装
    Mongodb 新版配置文件详解
  • 原文地址:https://www.cnblogs.com/chenshikun/p/6093712.html
Copyright © 2011-2022 走看看