linux c文件生成so文件并调用示例

1. 编写动态链接库的.c和.h源文件

新建test1文件夹,在该文件夹下新建add.c文件,源码如下:

int add (int a, int b)
{
    return a+b;
}

新建add.h文件,源码如下:

int add (int a, int b);

文件列表如下:

luo@luo-desktop:~/test1$ ls
add.c  add.h
2. 生成动态链接库文件

执行以下命令生成libadd.so文件:

luo@luo-desktop:~/test1$ gcc add.c -fPIC -shared -o libadd.so
luo@luo-desktop:~/test1$ ls
add.c  add.h  libadd.so
3. 编写测试代码调用.so文件

新建main.c文件,源码如下:

#include "stdio.h"
#include "add.h"
int main (void)
{
    int result = add(1, 2);
    printf("hello world %d \n", result);
    return 0;
}

文件列表如下:

luo@luo-desktop:~/test1$ ls
add.c  add.h  libadd.so  main.c

执行以下命令调用libadd.so文件生成可执行文件:

luo@luo-desktop:~/test1$ gcc main.c -L. -ladd -o main
luo@luo-desktop:~/test1$ ls
add.c  add.h  libadd.so  main  main.c
luo@luo-desktop:~/test1$ ./main 
./main: error while loading shared libraries: libadd.so: cannot open shared object file: No such file or directory

运行main时报错说找不到libadd.so,所以需要把libadd.so文件的路径加入到环境变量LD_LIBRARY_PATH中,或者修改/etc/ld.so.conf文件,这里演示第一种方法,执行以下命令:

luo@luo-desktop:~/test1$ export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:`pwd`
luo@luo-desktop:~/test1$ ./main
hello world 3 

测试成功。

  • 8
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值