linux中[gcc -shared -fPIC]的含义

 

linux在gcc编译时加上 -shared 参数时,目的是使源码编译成动态库 .so 文件;

 

而-fPIC的作用是 告知编译器 生成位置无关代码(编译产生的代码没有绝对位置,只有相对位置);从而可以在任意地方调用生成的动态库。

 

示例:

  gcc fun.c -shared - fPIC -o libfun.so

  如果代码没有错误,则可以在当前路径下生成libfunc.so文件;

  此时此动态库还不能被正确的链接上,因为系统寻找链接库的路径不包含当前路径;需要将此so文件放到搜寻路径中,或者添加寻找路径;

      默认查找的路径中有 /usr/lib   可以使用:

            sudo cp libfunc.so /usr/lib/ 

      将动态库复制到 /usr/lib目录中。

 

      或 添加搜寻路径可以在环境变量  LIBRARY_PATH  中添加:

            LIBRARY_PATH=$LIBRARY_PATH:.

      这样就添加了[当前路径]为动态库的搜寻路径。(   :为路径分割符    . 为当前路径   )

      注意:修改了LIBRARY_PATH之后必须执行  export LIBRARY_PATH  才能生效,而且只能在当前终端生效。

  在其他文件需要调用其中的函数时,编译时加上 -lfunc。

示例:

  gcc main.c -lfun

  即可生成链接了libfunc.so的可执行文件;

  

posted on 2021-04-20 21:02  为何学习  阅读(1767)  评论(0编辑  收藏  举报