zoukankan      html  css  js  c++  java
  • 小白学makefile之三

    本文简单介绍共享库的生成与使用

    当前目录下有三个文件,我们稍后会将plus.c编译成为共享库so文件以供main调用

    $ls

    main.c plus.c plus.h

    main.c

    #include <stdio.h>
    #include "plus.h"
    
    int
    main(int argc, char** argv)
    {
        int a = 10;
        int b = 5;
    
        printf("a + b = %d\n", plus(a, b));
        return 0;
    }

    plus.c

    // plus.c
    int plus(int a, int b)
    {
        return a+b;
    }

    plus.h

    #ifndef  PLUS_H_
    #define  PLUS_H_
    
    int plus(int a, int b);
    
    #endif

    第一步:

    使用gcc编译,记得加上PIC 选项,这样生成的plus.o才能生成共享库

    $ gcc -fPIC -c plus.c
    $ ls
    main.c plus.c plus.h plus.o

    第二步:

    同样使用gcc能编译出so文件,加上shared,这样生成的so库才能共享使用
    $ gcc -shared plus.o -o libplus.so
    $ ls
    libplus.so main.c plus.c plus.h plus.o

    第三步:

    使用gcc生成执行程序main,命令如下。
    $ gcc main.c -L. -lplus -o main
    $ ls
    libplus.so main main.c plus.c plus.h plus.o
    $ ./main
    a + b = 15
    (如果不能运行请设置变量export LD_LIBRARY_PATH=./,使得./main可以在当前路径找到依赖库)

    虽然篇没有makefile的知识,但对于我们以后理解makefile会很有帮助。^ ^

  • 相关阅读:
    postman使用感言
    20. 有效的括号
    13. 罗马数字转整数
    qsort / bsearch
    堆排序(heapsort)
    递归Recursion
    拓扑排序
    N/A的含义
    初级系列17.爱因斯坦的数学题问题
    初级系列16.求车速问题
  • 原文地址:https://www.cnblogs.com/jogger/p/2538361.html
Copyright © 2011-2022 走看看