linux C 生成与使用 so 文件
2013-05-23 23:43
267 查看
// test.c------------------------------------- #include "test.h" int a(){ printf("a"); return 0; } int b(){ printf("b"); return 0; } //test.h------------------------------------------------------ #include <stdio.h> int a(); int b();
再着编译 test.c
gcc test.c -fPIC -shared -o libtest.so
下面是调用libtest.so 的代码(mm.c):
//mm.c #include "test.h" int main() { a(); b(); return 0; }
编译指令:gcc mm.c -L. -ltest -o mm
-fPIC:表示编译为位置独立的代码,不用此选项的话编译后的代码是位置相关的所以动态载入时是通过代码拷贝的方式来满足不同进程的需要,而不能达到真正代码段共享的目的。
-L.:表示要连接的库在当前目录中
-ltest:编译器查找动态连接库时有隐含的命名规则,即在给出的名字前面加上lib,后面加上.so来确定库的名称
LD_LIBRARY_PATH:这个环境变量指示动态连接器可以装载动态库的路径。
如果运行 mm 这个文件时,找不到so ,就要在LD_LIBRARY_PATH 这个环境变量设置so所在的目录
eg: exportLD_LIBRARY_PATH=~/myso
(假如的工作目录是: ~/myso,编译生成的so,与test.h,test.c ,mm.c都在这里)
相关文章推荐
- 利用IDEA进行JNI开发:使用NDK生成Linux平台下的so文件
- Tips: 使用autotools生成动态.so库文件 / Generate .so library files using autotools in Solaris and Linux
- JNI 编写动态链接库 HelloNative 详细过程(也即用Java和C在Linux下动态生成并使用so文件过程)
- Linux环境下静态库和动态库的生成和使用 (.a文件和.so文件)
- 转载:JNI 编写动态链接库 HelloNative 详细过程(也即用Java和C在Linux下动态生成并使用so文件过程)
- Linux 下使用gcc生成so(动态链接库)文件
- Linux环境下动态库的生成和使用 (.so文件)
- Linux环境下动态库的生成和使用 (.so文件)
- 如何引用第三方提供的.so库文件以及如何使用javah生成.h文件
- 使用javah快速生成本地方法及生成so动态库文件
- linux 静态库(.a)、动态库(.so)的创建生成和使用方法
- linux使用dd命令快速生成大文件
- Linux下静态库_库的基本概念;如何生成静态库动态库;nm查看库中包含那些函数、ar生成静态库,查看库中包含那些.o文件、ldd查看程序依赖的.so文件;gcc/g++与库相关的参数-L,-l,-f
- Java在linux下调用C/C++生成的so文件
- Linux下的动态链接库.so文件的使用
- Mac下使用Android的Jni生成动态库so文件,并打包到APK包说明
- linux .c文件生成库文件的方法与使用
- Android NDK学习(4)使用cygwin生成.so库文件
- Android 使用 FFmpeg (一)——编译生成.so文件
- Linux下使用automake、autoconf生成configure文件