zoukankan      html  css  js  c++  java
  • 利用GCC编译器生成动态链接库和静态链接库

    转载请标明:http://www.cnblogs.com/winifred-tang94/

    1、编译过程

    gcc –fPIC –c xxx.c

    其中-fPIC是通知gcc编译器产生位置独立的目标代码。链接的时候不通过拷贝来进行。

    2、链接过程

    gcc –shared –o libxxx.so xxx.o

    经过编译链接就可以生成动态链接库,其扩展名为.so

    Eg.

    还可以gcc –fPIC –shared -o libhello.so hello.c

    举个例子:

    //Hello.h

    //hello.c

    //main.c

    先生成动态链接库

    然后编译链接main.c

    但是把-lhello放在文件名后面就没有问题了,并生成了一个main执行文件:

    运行执行文件的时候出现了以下问题:

    原因可能是程序运行时并不知道动态库所在的路径,因此自然未找到。

    解决方法:

    拷贝动态链接库到系统共享目录下,或在系统共享目录下为该动态链接库建立连接(硬连接或符号连接均可,常用符号连接)。

    其中ldconfig是为了让动态链接库为系统所共享。

    动态链接库被系统所共享以后,再运行main,得到结果如下:

    利用GCC编译器生成静态链接库

    用个例子来说明如何在gcc编译器中生成静态链接库

    //Hello.h

    //hello.c

    //main.c

    首先gcc –c hello.c文件生成hello.o

    然后利用hello.o生成静态链接库,利用

    ar –rc –o libhello.a hello.o

    或者利用 ar rcs –o libhello.a hello.o

    然后利用静态链接库编译链接main.c

  • 相关阅读:
    《架构之美》读后感(一)
    《架构即未来》读后感(三)
    《架构即未来》读后感(二)
    《架构即未来》读后感(一)
    《架构漫谈》读后感(三)
    《架构漫谈》读后感(二)
    SOA
    软件杯-视频全量目标分析和建模需求分析说明
    阅读笔记一线架构师实践指南03
    阅读笔记一线架构师实践指南02
  • 原文地址:https://www.cnblogs.com/winifred-tang94/p/5838324.html
Copyright © 2011-2022 走看看