gcc编译动态链接库

3 篇文章 0 订阅

演示动态链接库的编译和使用

1. 编写代码

*************hello.h**************

void print_hello();

***********hello.c**************
#include "hello.h"
#include <stdio.h>
void print_hello()
{
    printf("hello world!");
}
2. 编译生成动态链接库

gcc -fpic -shared hello.c -o libhello.so

-fpic: generate position-independent-code

-shared: generate a shared object which can then be linked with other objects to form an executable.

3. 将hello.h libhello.so文件放入特定目录
    如/home/test/local/include/ 和 /home/test/local/lib/下

4. 使用动态链接库

************test.c**************
#include <hello.h>
int main()
{
    print_hello();
}

编译链接
gcc test.c -o test -L/home/test/local/lib -lhello -I/home/test/local/include

-L:(Library)指定库文件目录
-I:(include)指定头文件目录

-l:(library)指定链接库

执行

./test

此时可能遇到"无法找到libhello.so"的错误, 这个问题是ld在加载动态库文件的时候,没有在搜索目录中找到libhello.so
一个解决方法是指定LD_LIBRARY_PATH

export LD_LIBRARY_PATH=/home/test/local/lib:$LD_LIBRARY_PATH

你的反馈就是博主进步的最大动力


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值