• gcc 编译相关


    1、ubuntu 中添加编译链接库

      1)gcc 中 -L   -rpath_link  -rpath 选项

        -L                : “链接”的时候,去找的目录,所有 -lFOO 选项设置的库,都会先从 -L 指定的目录去找,然后是默认的地方。

                  -rpath_link   :指定链接时的搜索路径,运行时依赖 LD_LIBRARY_PATH。

                  -rpath           : 指定链接时搜索路径,并且此路径生成到了可执行文件中。

            2)export LD_LIBRARY_PATH

            3)  ldconfig

                 有时候,没有指定 -rpath ,也没有指定  LD_LIBRARY_PATH,可执行程序再运行时依然能找到对应的链接库,时由于ldconfig作用。

            ldconfig在默认搜寻目录(/lib和/usr/lib)以及动态库配置文件/etc/ld.so.conf内所列的目录下,搜索出可共享的动态 链接库(格式如前介绍,lib*.so*),进而创建出动态装入程序(ld.so)所需的连接和缓存文件.

      缓存文件默认为  /etc/ld.so.cache,此文件保存已排好序的动态链接库名字列表.

    2、gcc/g++ 编译链接静态库报未定义函数错误

      一般情况是链接的静态库依赖于其它一些第三方库,需要添加这些第三方库的链接选项到当前的编译工程。

      编译A  ,链接静态库 B,静态库B依赖 第三方库C,A编译选项添加-lC

    3、关于多版本链接错误

      lcm/lib/liblcm.a(lcm_mpudpm.c.o): undefined reference to symbol 'pthread_sigmask@@GLIBC_2.2.5'
    /lib/x86_64-linux-gnu/libpthread.so.0: error adding symbols: DSO missing from command line

      如上错误,大致原因为多版本的libpthread 库造成的,错误提示未定义的'pthread_sigmask@@GLIBC_2.2.5',有两个方面,这个库是glib中的pthread,这边修改了

    cmake中target_link_libraries 链接库选项切换顺序,将-lglib-2.0 选项放在与此有冲突版本的前面。

    提前

     

      

  • 相关阅读:
    算法
    日常
    算法
    算法
    算法
    算法
    NaviCat连接mysql出现加密方式错误的解决方案:
    Sql sugar的使用
    报表体联查详情页面
    第一次用临时表的感受:
  • 原文地址:https://www.cnblogs.com/Forwarderz/p/13655878.html
Copyright © 2020-2023  润新知