Linux 创建静态库以及静态库的使用
来源:互联网 发布:mt4画线软件 编辑:程序博客网 时间:2024/05/22 14:04
目录:
1 手动建立静态库
2 静态库的使用
3 通过makefile文件建立静态库
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");
- // output
- fflush(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 -pthread
libhelpguy.a: helpguy.o
ar crs $@ $^
chmod u+x $@
helpguy.o: helpguy.cc
g++ -o $@ -c $< $(CFLAGS)
clean:
rm -rf helpguy.o
LIBS=-lrt -pthread
libhelpguy.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.o
chmod u+x libhelpguy.a
ar crs libhelpguy.a helpguy.o
chmod u+x libhelpguy.a
如果你有多个.o文件,可以在libhelpguy.a: 后边继续添加,然后模仿 helpguy.o添加
生成目标文件的命令。
0 0
- Linux 创建静态库以及静态库的使用
- Linux 创建静态库以及静态库的使用
- Linux 静态库的创建和使用
- Linux 静态库的创建和使用
- Linux静态库的创建与使用
- linux静态库的创建与使用
- linux静态库的创建及使用
- Xcode6.4创建以及使用iOS.a的静态库
- ios .a静态库和framework静态库的创建以及使用
- Linux创建静态库
- Linux下静态库的生成以及使用实例图解
- Linux下静态库的生成以及使用实例图解
- Linux静态库和动态库的创建与使用
- Linux下静态库、动态库的创建和使用
- Linux库的创建和使用--静态库
- Linux下静态库、动态库的创建和使用
- linux---静态库与动态库的创建、生成、使用
- Linux静态/动态链接库的创建和使用
- github primer
- vim命令
- 守护进程及守护进程输出
- iOS 定位坐标不准确的相关整理及解决方案汇总
- Javascript:获取浏览器窗口和屏幕的可用宽高
- Linux 创建静态库以及静态库的使用
- Markdown看来还不错
- Quora译文:通俗解释“为什么数据库难以拓展”
- 防止sql肓注
- java中正则表达式的理解和使用
- Linux命令行之逗趣无极限
- 【Linux】Vim常用命令汇总
- Java4Android学习九 - 接口
- 高仿精仿金山手机卫士源码项目完整版