美文网首页
编译成动态库

编译成动态库

作者: only_cherry | 来源:发表于2018-08-18 11:27 被阅读0次

1.所需的文件:main.c main.h test.c test.h

将这几个文件编译成动态库:libtest.so

gcc test.c -fPIC -shared -o libtest.so

编译完成后会在当前目录下生产libtest.so这个文件
将main.c与动态库libtest.c链接生成可执行文件main:

gcc  test.c -L./ -ltest -o main

执行ldd main 可以查看如何调用动态库中的函数

2.编译参数解析:

-shared:表示生成动态链接库,不使用该标志外部程序无法链接,相当一个可执行文件
 -fPIC:表示编译为位置独立的代码,不用此选项的话编译后的代码是位置相关的所以动态载入时是通过代码拷贝的方式来满足不同进程的需要,而不能达到真正代码段共享的目的。
-L:制定所要链接的库所在的目录(-L后面紧跟路径)
-ltest:编译器查找动态连接库时的命名规则,即在给出test名字前面加上lib,后面加上.so来确定库的名称
LD_LIBRARY_PATH:这个环境变量指示动态连接器可以装载动态库的路径。

或者将libtest.so拷贝到/lib目录下

相关文章

  • 编译成动态库

    1.所需的文件:main.c main.h test.c test.h 将这几个文件编译成动态库:libtest....

  • Ndk生成so和a库,然后主项目进行调用

    在 NDK 开发中引入第三方静态库和动态库 静态库和动态库 静态库 静态库文件后缀一般为 .a ,利用静态库编译成...

  • FFmpeg-编译iOS静态库

    下载的ffmpeg一般需要自己编译下,如果在iOS上用编译成静态库.a文件,如果在安卓上用编译成.so动态库。把编...

  • iOS的代码注入

    代码一般是编译成动态库或者静态库注入到应用程序中的 1. 动态库 库是一种共享程序代码的方式,从本质上来说是就是一...

  • go编译dll给python调用

    go 编译成dll动态库 将生成的dll拷贝到python目录下 python调用代码

  • iOS疑难杂症集

    1、动态库制作相关 问题描述:在编译生成静态库.a文件的时候,选择iOS Simulators编译成功,但是换成B...

  • CMakeLists用法总结

    分一下几个方面来描述: 1. 每一个LIB要编译成静态库或动态库如何描述,每一个TOOL要编译成可执行文件如...

  • MXnet安装和编译

    根据install MXNetMXNet安装其实是从c++文件make编译成动态库到incubator-mxnet...

  • OpenSSL实践-Android下的编译和使用

    1. 概述 openssl可以编译成ARM下面的二进制代码(动态库或者静态库),方便APP使用,APP在使用的时候...

  • 如何设置ndk编译脚本属性

    通常我们在ndk编译时,都是一个编译脚本,将c/c++文件通过编译脚本Android.mk编译成动态库或者静态库。...

网友评论

      本文标题:编译成动态库

      本文链接:https://www.haomeiwen.com/subject/vqxfiftx.html