美文网首页
linux下使用gcc生成动态so,并调用

linux下使用gcc生成动态so,并调用

作者: 圈圈猫 | 来源:发表于2017-03-30 16:16 被阅读500次

在linux下编译C/C++经常会遇到,在这里做个笔记,也是因为别人问我,我才想起来去查了下,发现网上有这样的玩意,但有些坑吧。

通过一个例子看看如何生成动态库。

头文件:so_test.h
三个.c文件:test_a.c test_b.c test_c.c

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

so_test.h

#include "stdio.h"
void test_a();
void test_b();
void test_c();

test_a.c

#include "so_test.h"
void test_a()
{
  printf("this is in test_a...\n");
}

test_b.c

#include "so_test.h"
void test_b()
{
  printf("this is in test_b...\n");
}

test_c.c

#include "so_test.h"
void test_c()
{
  printf("this is in test_c...\n");
}

打开命令行,编译动态库:libtest.so

$ gcc test_a.c test_b.c test_c.c -fPIC -shared -o libtest.so

2 动态库的链接

test.c

#include "so_test.h"
int main()
{
test_a();
test_b();
test_c();
return 0;
}

将test.c与动态链接库libtest.so链接生成执行文件test:

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

3 测试是否动态链接,

$ ldd test

执行test,可以看到libtest.so not find

选区_003.png

将libtest.so放到usr/lib目录下

前提是你必须有访问该文件的权限.如果要权限,可以将命令切换到usr下,然后输入命令

$ sudo chmod 775 lib

再次输入命令

$ ldd test

得到如下结果:


选区_005.png

暂时就记录到这里了,至于在android怎么玩我还在研究中。。。。

相关文章

  • linux下使用gcc生成动态so,并调用

    在linux下编译C/C++经常会遇到,在这里做个笔记,也是因为别人问我,我才想起来去查了下,发现网上有这样的玩意...

  • 编译适用arm 架构的so

    在 jni 调用 那篇,我们介绍了使用 gcc 编译so 库,但是在Mac 系统下,直接使用默认的gcc 编译so...

  • gcc 学习笔记

    目录结构 动态库 生成动态库 gcc -fPIC -shared common.c -o libcommon.so...

  • Linux动态库

    深入探讨Linux静态库与动态库的详解(一看就懂)Linux下动态库的生成和使用Linux下动态库生成和使用转-u...

  • 二.gcc 编译链接C文件并使用动态库

    参考 Linux编程练习(二)—— Linux下.so动态库的建立和调用 1.假设我们有一个动态库libHello...

  • 六.打包so库

    一.使用gcc打包so 将文件Hello.c编译成一个动态库:libHello.so,执行命令如下: $ gcc ...

  • Android 生成So库的调用方式

    简介 上篇文章简单树立了创建和调用C++代码以及生成So库一些东西,这里紧接上边梳理一下动态So库生成后的调用问题...

  • linux下使用gcc编译so库

    最近公司在做微信端的定位和导航,所以需要云端提供导航和定位功能,为了复用之前客户端的代码,所以我需要把c文件编译成...

  • windows 平台使用 android ndk

    目的:在windows平台上,使用android ndk创建一个简单的.so动态库,并使用jni调用其函数。 当前...

  • 2018-09-30Linux动态库使用

    1.生成so gcc -shared -o libmyCalc.so *.o 2。生成myAPp [root@...

网友评论

      本文标题:linux下使用gcc生成动态so,并调用

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