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
  • 相关阅读:
    PL/SQL注册码
    分页sql
    js获取url值
    C语言中的bool类型 stdbool.h
    语音朗读小程序
    50. Pow(x, n)
    二维数组旋转
    用一位数组代替二维数组作为形参使用
    单链表排序——交换数据成员
    C++重载输入流、输出流运算符
  • 原文地址:https://www.cnblogs.com/sonnet/p/15187479.html
Copyright © 2011-2022 走看看