Linux下制作静(动)态库

it2025-02-26  26

关键命令:

动态库制作命令

gcc xxx.c -fPIC -shared -o libxxx.so

静态库制作命令

gcc -c xxx.c

ar crv libxxx.a xxx.o

例:

 

//hello.h #ifndef HELLO_H #define HELLO_H void hello(const char * name); #endif //hello.c #include<stdio.h> void hello(const char * name) { printf("hello %s!\n",name); } //test.c #include<stdio.h> #include"hello.h" int mian() { hello("csk"); return 0; }

 

一、将hello.c 编译成静态库

gcc -c hello.c //生成hello.o文件

ar -rcv libhello.a hello.o //生成静态库

gcc -o hello test.c -L. -lhello //链接静态库将test.c文件编译生成可执行文件hello

./hello //执行

二、将hello.c编译生成动态库

gcc hello.c -fPIC -shared -o libhello.so //生成动态库

gcc -o hello test.c -L. -lhello //链接动态库将test.c文件编译生成可执行文件hello

export LD_LIBRARY_PATH=$(pwd) 或者ldconfig "目录名" (当前文件所在的目录)

./hello //执行

使用Makefile 编译动态库

# 1、准备工作,编译方式、目标文件名、依赖库路径的定义。 CC = gcc CFLAGS := -Wall -O3 -std=c++0x OBJS = hello.o #.o文件与.cpp文件同名 LIB = libhello.so # 目标文件名 # 2. 生成.o文件 %.o : %.cpp $(CC) $(CFLAGS) -fpic -c $< -o $@ # 3. 生成动态库文件 $(LIB) : $(OBJS) rm -f $@ $(CC) -shared -o $@ $(OBJS) rm -f $(OBJS) # 4. 删除中间过程生成的文件 clean: rm -f $(OBJS) $(LIB)

 

使用Makefile 编译静态库

# 1、准备工作,编译方式、目标文件名、依赖库路径的定义。 CC = gcc CFLAGS := -Wall -O2 -std=c++0x OBJS = hello.o #.o文件与.cpp文件同名 LIB = libhello.a # 目标文件名 # 2. 生成.o文件 %.o : %.cpp $(CC) $(CFLAGS) -c $< -o $@ # 3. 生成静态库文件 $(LIB) : $(OBJS) rm -f $@ ar cr $@ $(OBJS) rm -f $(OBJS) # 4. 删除中间过程生成的文件 clean: rm -f $(OBJS)$(LIB)

 

转载于:https://www.cnblogs.com/chenshikun/p/6093712.html

相关资源:数据结构—成绩单生成器
最新回复(0)