zoukankan      html  css  js  c++  java
  • linux 怎么使用一个c/c++库

    linux 怎么使用一个c/c++库

    使用一个库,库有动态和静态之分。

    静态库只要能够编译通过,运行时就没有提示缺少这个库可能,因为把这个库就是这个使用者的一部分了。
    动态库。两部分。
    1 库信息的注册
    主要是名字,其次有运行时到哪里找,找到后加载到什么位置。在编译部分完成,通常做法使用 -lxxx 参数参数传递给gcc。比如libxml2.so,
         gcc *.c -lxml2 -o a.out
    那么
    1. # ldd a.out
    2. ....
    3. libxml2.so.2 => /usr/lib64/libxml2.so.2 (0x00007f6e935db000)
    4. ....
    这个就是把libxml2.so.2的使用注册完成了。这是为运行时使用准备的。
    2 声明库存放的位置
    老生常谈的问题,寻找库的是ld.so,标准路径是/bin /bin64 /usr/bin /usr/bin64.
    这些都记录在/etc/ld.so.cache. 这是ld.so直接找的地方。没有在这里注册的,放在标准路径,一般情况下也是不行的,照旧提示找不到。
    /etc/ls.so.cache的来源。ldconfig 命令生成。
    1. ldconfig
    ldconfig会遍历/etc/ld.so.conf文件,一行一个路径,一个路径一个路径的寻找,把动态库和它的绝对路径写在/etc/ld.so.cahce中,加速查找。
    1. # cat /etc/ld.so.conf
    2. /usr/X11R6/lib64/Xaw3d
    3. /usr/X11R6/lib64
    4. /usr/lib64/Xaw3d
    5. /usr/X11R6/lib/Xaw3d
    6. /usr/X11R6/lib
    7. /usr/lib/Xaw3d
    8. /usr/x86_64-suse-linux/lib
    9. ....
    cache 是个没有换行符的文件,a.so 路径b.so 路径...,就这样排列,一般用这个命令查看

    1. # ldconfig -p
    2. ......
    3. libx86.so.1 (libc6,x86-64) => /usr/lib64/libx86.so.1
    4. libx86.so (libc6,x86-64) => /usr/lib64/libx86.so
    5. libxtables.so.4 (libc6,x86-64) => /usr/lib64/libxtables.so.4
    6. libxslt.so.1 (libc6,x86-64) => /usr/lib64/libxslt.so.1
    7. libxslt.so.1 (libc6) => /usr/lib/libxslt.so.1
    8. libxrxnest.so (libc6,x86-64) => /usr/lib64/libxrxnest.so
    9. libxrx.so (libc6,x86-64) => /usr/lib64/libxrx.so
    10. libxml2.so.2 (libc6,x86-64) => /usr/lib64/libxml2.so.2
    11. libxml2.so.2 (libc6) => /usr/lib/libxml2.so.2
    12. .......
    很清爽。
    当然这都是root干的,变量LD_LIRARY_PATH给了平民自由,没有找到的会在这个变量下搜。
    所以,声明库的位置应该在/etc/ld.so.cache 和 LD_LIBRARY_PATH中,这些地方没有,就等着报错吧。

  • 相关阅读:
    平衡二叉树之RB树
    平衡二叉树之AVL树
    实现哈希表
    LeetCode Median of Two Sorted Arrays
    LeetCode Minimum Window Substring
    LeetCode Interleaving String
    LeetCode Regular Expression Matching
    PAT 1087 All Roads Lead to Rome
    PAT 1086 Tree Traversals Again
    LeetCode Longest Palindromic Substring
  • 原文地址:https://www.cnblogs.com/timssd/p/4781158.html
Copyright © 2011-2022 走看看