Linux 创建静态库以及静态库的使用

目录:

1 手动建立静态库

2 静态库的使用

3 通过makefile文件建立静态库

1 手动建立静态库

将建立一个简单的静态库

-1: 将所需的源文件编译成目标文件

—— helpguy.h

#ifndef __helpguy_h__#define __helpguy_h__#include <stdlib.h>#include <stdio.h>#include <unistd.h>void err_msg(const char* errMsg, …);#endif // __helpguy_h__

—— helpguy.cc

#include "helpguy.h"#include <stdarg.h>#include <errno.h>#include <string.h>void exit_msg(const char* errMsg, …){va_list ap;va_start(ap, errMsg);int errno_save = errno;char buf[1024];vsnprintf(buf, sizeof(buf) – 1, errMsg, ap);if(errno_save != 0){int len = strlen(buf);snprintf(buf + len, sizeof(buf) – len – 1, ": (%d) %s",errno_save, strerror(errno_save));}strcat(buf, "\n");// outputfflush(stdout);fputs(buf, stderr);fflush(stderr);va_end(ap);exit(1);}

编译:

g++ -c helpguy.cc // 生成文件: helpguy.o

-2 将目标文件创建成静态库文件

一般静态库名称为libxxx.a,在使用时,在命令行末尾添加 -lxxx, 那么,编译就会查找

libxxx.a或者libxxx.so文件。

ar crs libhelpguy.a helpguy.o // 生成库文件:libhelpguy.a

2 静态库的使用

——测试文件 main.cc

#include "helpguy.h"#include <iostream>int main(int argc, char** argv){std::cout << "Please enter positive integer: ";int value;std::cin >> value;if(value <= 0)exit_msg("need positive integer");std::cout << "The value is: " << value << std::endl;std::cout << "OK" << std::endl;return 0;}

编译:

g++ -o main main.cc -L. -lhelpguy // 生成: main文件

./main

当你输入非整数的时候就会调用exit_msg

-L. 告诉编译器在当前目录洗"."寻找名为 libhelpguy.a或者libhelpguy.so库文件

3通过makefile文件建立静态库

—– makefile

CFLAGS=-g -D__STDC_FORMAT_MACROS -Wall -Werror -I.LIBS=-lrt -pthreadlibhelpguy.a: helpguy.o ar crs $@ $^ chmod u+x $@helpguy.o: helpguy.cc g++ -o $@ -c $< $(CFLAGS)clean: rm -rf helpguy.o

输入make命令即可创建静态库文件:

make

g++ -o helpguy.o -c helpguy.cc -g -D__STDC_FORMAT_MACROS -Wall -Werror -I.ar crs libhelpguy.a helpguy.ochmod u+x libhelpguy.a

如果你有多个.o文件,可以在libhelpguy.a: 后边继续添加,然后模仿 helpguy.o添加

生成目标文件的命令。

,只有流过血的手指才能弹出世间的绝唱。

Linux 创建静态库以及静态库的使用

相关文章:

你感兴趣的文章:

标签云: