zoukankan      html  css  js  c++  java
  • C/C++ 静态库动态库实践

    Source File

    List:

    • mylib.c
    • mylib.h
    • test.c
    1. mkdir library and cd library
    2. mkdir lib include
    3. vim include/mylib.h
    #ifndef __MYLIB_H__
    #define __MYLIB_H__
    int qpow(int, int);
    #endif /* __MYLIB_H__ */
    
    1. vim mylib.c
    /******************************************************************************
     * File:             mylib.c
     *
     * Author:           Gsharp
     * Created:          05/15/21
     * Description:      library mylib implements
     *****************************************************************************/
    
    #include "mylib.h"
    
    int qpow(int a, int n) {
      int res = 1;
      if (a < 0 || n < 0) {
        return -1;
      }
      while (n) {
        if (n & 1) res *= a;
        a *= a;
        n >>= 1;
      }
      return res;
    }
    
    1. wirte a test
    #include <stdio.h>
    
    #include "mylib.h"
    int main(int argc, char *argv[]) {
      printf("%d ^ %d = %d", 3, 10, qpow(3, 10));
      return 0;
    }
    

    Static Library

    Build

    1. gcc -g -Wall -Werror -fPIC -c lib/mylib.c -I./include you will get mylib.o
    2. ar rcs lib/libmylib.a mylib.o

    Usage

    • gcc test.c -static -I include/ -L lib/ -lmylib -o test

    Dynamic Library

    Build

    gcc -g -Wall -Werror -Wextra -fPIC -shared -pedantic mylib.c -o lib/libmylib.so

    Usage

    • export LD_LIBRARY_PATH=./lib:$LD_LIBRARY_PATH
    • gcc test.c -I inlude/ -L lib/ -lmylib -o test
  • 相关阅读:
    使用PaintCode便捷地实现动画效果
    程序员常用markdown语法记忆小结之博客园markdown编辑器的效果
    kafka-重复消费-1
    nosql
    ThreadLocal
    内存溢出、内存泄漏
    springboot邮件服务
    三次握手、四次挥手
    悲观锁乐观锁简单整理
    beanstalkd
  • 原文地址:https://www.cnblogs.com/sonnet/p/15187479.html
Copyright © 2011-2022 走看看