gcc生成.so文件及.so文件的使用
来源:互联网 发布:淘宝店铺装修免费素材 编辑:程序博客网 时间:2024/05/10 06:39
.so文件在linux中正如.dll文件在windows中,作为动态链接库,该类型的文件有着极其重要的作用。那如何自己编写.so文件呢,编写的文件如何使用呢?
首先我们的源文件如下所示
hello.h
#include <stdio.h>#include <stdlib.h>void hello();
hello.c
#include "hello.h"void hello(){ printf("this is in hello...\n");}
我们就是打算将这两个文件编译成.so文件 使用命令 gcc hello.c -shared -fPIC -o libhello.so就可以得到文件名为libhello.so的文件了。
其中 -shared选项说明编译成的文件为动态链接库,不使用该选项相当于可执行文件
-fPIC 表示编译为位置独立的代码,不用此选项的话编译后的代码是位置相关的。所以动态载入时是通过代码拷贝的方式来满足不同进程的需要,而不能达到真正代码段共享的目的。
hello_b.c
<pre name="code" class="cpp">#include "hello.h"int main(){ hello(); return 0;}
编译该文件gcc hello_b .c-L. -lhello hello 生成hello文件
其中-L. 表示链接的文件在当前目录下
-lhello 代表链接的文件名 gcc会自动为其前面添加lib,在其后边添加.so 即libhello.so
使用ldd hello会看到可执行文件hello所有链接的动态库,你会发现libhello.so显示的是找不到文件,所以需要修改环境变量。
export LD_LIBRARY_PATH=your path : $LD_LIBRARY_PATH:
这条命令相当与在LD_LIBRARY_PATH前追加一个路径,也就是你的动态链接库所在的路径,当运行hello的时候会先去访问该路径,找不到则依次往后查找。
0 0
- gcc生成.so文件及.so文件的使用
- Opencv编译生成的so文件及使用
- Linux 下使用gcc生成so(动态链接库)文件
- AndroidStudio 2.2.3:编译C++文件、生成so文件及so文件使用
- so文件的使用
- gcc 创建和使用so文件
- 如何生成.so和.a文件及使用
- c 生成.so 文件及 python 调用.so
- 如何调用已有的SO文件来生成供Android使用的SO文件
- android生成so文件
- android生成so文件
- 生成so文件
- NDK生成so文件
- eclipse生成SO文件
- NDK生成so文件
- 简单的使用so文件
- 使用cygwin生成.so库文件
- android 使用 ndk生成.so文件
- Linux程序设计笔记(第12章 POSIX线程)
- http报错之return error code:401 unauthorized
- 机器学习中的数学(1)-回归(regression)、梯度下降(gradient descent)
- NS2 GDB调试
- 丁丁猫教你如何三维全景制作
- gcc生成.so文件及.so文件的使用
- 第一个开源项目的contribute
- Linux程序设计笔记(第13章 进程间通信:管道)
- Swift源码分析----swift-object-updater
- 解读国内四大典型移动支付TSM平台的发展
- 2.3、在AutoCAD中创建对象
- pat相关资源
- 模式识别基本概念
- Linux程序设计笔记(第14章 信号量、共享内存和消息队列)