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的可执行文件;

  

linux中[gcc -shared -fPIC]的含义的更多相关文章

  1. Linux中shell变量$0,$?等含义

    linux中shell变量$#,$@,$0,$1,$2的基本含义: 变量说明: $$ Shell本身的PID(ProcessID) $! Shell最后运行的后台Process的PID $? 最后运行 ...

  2. Linux中一些目录名称的含义

    挖Linux中的古老缩略语[2005-06-22 15:23][Nigel McFarlane][TechTarget] Unix已经有35年历史了.许多人认为它开始于中世纪,这个中世纪是相对于计算机 ...

  3. Linux中gcc编译器的用法

    在Linux环境下进行开发,gcc是非常重要的编译工具,所以学习gcc的基本常见用法时非常有必要的. 一.首先我们先说明下gcc编译源文件的后缀名类型 .c为后缀的文件,C语言源代码文件:  .a为后 ...

  4. [转] Linux中gcc,g++常用编译选项

    http://blog.sina.com.cn/s/blog_5ff2a8a201011ro8.html gcc/g++ 在执行编译时,需要4步 1.预处理,生成.i的文件[使用-E参数] 2.将预处 ...

  5. Linux中gcc和g++

    今天在Linux上编写一个小的C++程序运行,需要用到iostream中cout,一开始创建一个hello.c的文件编写如下代码: #include<stdio.h> #include&l ...

  6. linux中的特殊符号及其含义梳理

    1. 重定向符号及含义 注意:箭头流向即是数据的流向. 数字0:标准输入(standard input,简写stdin),数据从右往左方向流动 数字1:标准正确输出(standard output,简 ...

  7. 第十九章 Linux中常用字符的特殊含义

    一.引入 在Linux Shell中有很多的特殊符号,要知道这些特殊符号的用法,这些符号用好了可以达到事半功倍的效果. 二.常用符号 # ; ;; . , / \ 'string'| ! {} ? $ ...

  8. Linux中gcc与g++编译器的区别

    一.对于C文件 对于C文件gcc和g++所做的事情确实是一样的,g++在编译C文件时调用了gcc. 二.对于C++文件 1.预处理 预处理gcc与g++做了相同的事. 2.编译 gcc无法自动和c++ ...

  9. linux 中gcc的·安装、编译过程

    一.安装gcc编译器 通过命令gcc -v查看当前的GCC版本 [root@localhost /]# gcc -v Reading specs from /usr/i386-glibc-2.1-li ...

随机推荐

  1. www.yimitv.cc免费观看2020最新电影、电视剧、综艺栏目

    神奇的微信公众号  '德佑小站', 可以看最新上映电影.看小说.看直播!重要的是免费,csdn已加速. 壹米影视:www.yimitv.cc 德佑小说:www.deyouxs.cc

  2. 微信小程序:利用map方法方便获得对象数组中的特定属性值们

  3. IO、NIO、BIO的区别

    我们首先得明白什么是同步,异步,阻塞,非阻塞,只有这几个单个概念理解清楚了,然后在组合理解起来,就相对比较容易了. IO模型主要分类: 同步(synchronous) IO和异步(asynchrono ...

  4. StrictMode 检测应用

     Application, Activity, or other application component's onCreate() method:if (BuildConfig.SHOW_LOG) ...

  5. crudapi零代码开发平台应用场景和成功案例

    应用场景 在前面文章中,已经介绍了crudapi主要功能和使用方式,本文主要介绍crudapi应用场景以及具体的使用方式. 概要 crudapi属于产品级的零代码平台,无需编程,通过配置自动生成cru ...

  6. xss靶场大通关(持续更新ing)

      xss秘籍第一式(常弹) (1)进入自己搭建的靶场,发现有get请求,参数为name,可进行输入,并会将输入的内容显示于网页页面 (2)使用xss的payload进行通关: http://127. ...

  7. layui数据表格-通过点击按钮使数据表格中的字段值增加

    通过点击右侧相对应的操作按钮,对迟到.休假次数实现自增效果 jsp页面代码 //监听行工具事件 table.on('tool(test)', function(obj){ var data = obj ...

  8. 【odoo14】第十四章、CMS网站开发

    第十四章.CMS网站开发** Odoo有一个功能齐全的内容管理系统(CMS).通过拖放功能,你的最终用户可以在几分钟内设计一个页面,但是在Odoo CMS中开发一个新功能或构建块就不是那么简单了.在本 ...

  9. 基础篇:java.security框架之签名、加密、摘要及证书

    前言 和前端进行数据交互时或者和第三方商家对接时,需要对隐私数据进行加密.单向加密,对称加密,非对称加密,其对应的算法也各式各样.java提供了统一的框架来规范(java.security)安全加密这 ...

  10. CSS篇-dispaly、position、定位机制、布局、盒子模型、BFC

    display常用值 参考链接英文参考链接中文 // 常用值 none:元素不显示 inline:将元素变为内联元素,默认 block:将元素变为块级元素 inline-block:将元素变为内联块级 ...