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 选项放在与此有冲突版本的前面。

提前

 

  

原文地址:https://www.cnblogs.com/Forwarderz/p/13655878.html