Makefile 编译动态库文件及链接动态库

本文详细介绍了如何使用Makefile编译动态库libmytest.so,并展示了如何在两个不同场景下链接该动态库:一是在编译应用程序时加载,二是在程序运行时动态加载。同时提到了在/etc/ld.so.conf.d/添加库路径以及使用dlfcn.h动态加载函数的方法。
摘要由CSDN通过智能技术生成

文件目录结构如下

dynamiclibapp.c
Makefile
comm/inc/apue.h
comm/errorhandle.c
dynamiclib/Makefile
dynamiclib/dynamiclib_add.c
dynamiclib/dynamiclib_mul.c
dynamiclib/inc/dynamiclibs.h
dynamiclib/libs/

dynamiclib目录
dynamiclib/inc/dynamiclibs.h 文件内容如下:

#ifndef __dynamic_libs_h__
#define __dynamic_libs_h__
#include "apue.h"
int dynamic_lib_func_add(int i1, int i2);
int dynamic_lib_func_mul(int i1, int i2);
#endif

dynamiclib/dynamiclib_add.c 文件内容如下:

#include "dynamiclibs.h"

int dynamic_lib_func_add(int i1, int i2) 
 {
int iret = i1 + i2; 
printf("... in .so func, %d add %d,return %d\n", i1, i2, iret);
return iret;
 }

复制代码
dynamiclib/dynamiclib_mul.c 文件内容如下:

#include "dynamiclibs.h"
 
 int dynamic_lib_func_mul(int i1, int i2) 
{
 int iret = i1 * i2; 
printf("... in .so func, %d multiplys %d, retun %d\n", i1, i2, iret);
return iret;
 }

dynamiclib/Makefile 文件内容如下:

1 CC = gcc
2 CFLAGS = -Wall -g -O -fPIC 需要加上 -fPIC
3 CXXFLAGS =
4 INCLUDE = -I ./inc -I …/comm/inc
5 TARGET = libmytest.so
6 LIBPATH = ./libs/
7
8 vpath %.h ./inc
9
10 OBJS = dynamiclib_add.o dynamiclib_mul.o
11 SRCS = dynamiclib_add.c dynamiclib_mul.c
12
13 ( O B J S ) : (OBJS): (OBJS):

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值