zoukankan      html  css  js  c++  java
  • linux产生静态库和动态库

    如何构建一个库

    静态库(.a)

    静态库的建立和使用是非常简单的:

    1. 编译源文件:gcc -Wall -c test1.c test2.c

    2. 生成库文件:ar -cvq libtest.a

    3. 链接库文件:gcc -o exename source.c  libtest.a   或者

                        gcc -o exename source.c  -L/path/to/lib-directory -ltest

    动态库(.so)

    动态库的建立步骤、链接方法和静态库基本一致,如下:

    gcc -Wall -fPIC -c *.c

    gcc -shared -Wl,-soname,libctest.so.1 -o libctest.so.1.0   *.o

    mv libctest.so.1.0 /opt/lib

    ln -sf /opt/lib/libctest.so.1.0 /opt/lib/libctest.so.1

    ln -sf /opt/lib/libctest.so.1.0 /opt/lib/libctest.so

    链接命令:gcc -Wall -I/path/to/include-files -L/path/to/libraries prog.c -lctest -o prog

         注:这里的libname.so.x.x是版本化库,x代表版本号。另外,作为插件形式使用的共享不做介绍。

    库文件的路径:

    在程序运行期间,为了使库文件能够被程序链接到并使用,用户必须配置系统环境,以使得这些库文件能够被搜索到。可以使用以下任何一种方法:

    1、把库文件添加到/etc/ld.so.conf中:

        /usr/X11R6/lib

        /usr/lib

        /usr/lib/sane

        /usr/lib/mysql

        /opt/lib

    添加之后需要以root权限执行ldconfig命令,以使ld.so可以搜索到。

    2、添加特定路径到库缓存中:(root权限)

    ldconfig -n /opt/lib   </opt/lib中有libctest.so>

    这种方式的系统配置在系统重启后不会再起作用。

    3、配置环境变量LD_LIBRARY_PATH:

    命令:export LD_LIBRARY_PATH=/lib/directory:$LD_LIBRARY_PATH

     

    库文件路径的配置,就是为了是库文件加载器ld.so在运行时能够找到共享库文件。

  • 相关阅读:
    【递归】拆分自然数
    HDOJ3068最长回文
    博弈论——尼姆博奕
    vijos P1047最小公倍数
    Eular质数筛法-hiho一下 第九十三周
    hdoj-5652 India and China Origins二分+bfs
    hdoj-1166排兵布阵 简单的树状数组
    hdoj-5641 king's phone
    hdoj-1548简单的bfs题目
    命令中"|"的意义
  • 原文地址:https://www.cnblogs.com/welhzh/p/4213305.html
Copyright © 2011-2022 走看看