编写linux静态库
2015-11-24 20:53
513 查看
工作几年了,才换到liunx确实不太习惯,但是对于程序猿来说,这未尝不是让人兴奋的事情,能学到新的知识,每天都在进步。时间过的也确实快。。。。
那现在开始编写第一个静态引用库:
一般步骤:
1.编写cpp文件
2:编译成.o文件,注意用gcc -c,一定要加-c不然会生成可执行文件
3:ar 命令生成静态库
4:引用静态库
编写头文件:001_test.hpp
编写001_test.cpp
编译成静态库:
[root@localhost libtest]# gcc -c 001_test.cpp
会生成001_test.o
[root@localhost libtest]# ar -crv lib001_test.a 001_test.o
-c表示创建库
-r表示插入成员类或函数
-v表示更新版本
可以用命令:man ar查看
生成lib001_test.a静态库
最后使用静态库:
编写main.cpp
链接编译可执行文件001_test
[root@localhost libtest]# g++ -L/data/XXXX/XXXX/test/libtest -g3 -Wall main.cpp -o 001_test.dbg lib001_test.a
-L指定静态库路径
-g3生成可调试文件,可以用gdb调试
-Wall编译打印所有警告信息
还有药用g++编译,要是用gcc编译可能报错,以下是错误信息,可能是gcc不支持
[root@localhost libtest]# gcc -L/data/qmonster/liugao/test/libtest -g3 -Wall main.cpp -o 001_test lib001_test.a
/tmp/cc4QhyKL.o:(.eh_frame+0x13): undefined reference to `__gxx_personality_v0'
lib001_test.a(001_test.o):(.eh_frame+0x12): undefined reference to `__gxx_personality_v0'
collect2: ld returned 1 exit status
执行结果:
[root@localhost libtest]# ./001_test
Sum = 30
希望给新手有些帮助,也给自己留下笔记查看。。。
参看文章:/content/3614369.html
那现在开始编写第一个静态引用库:
一般步骤:
1.编写cpp文件
2:编译成.o文件,注意用gcc -c,一定要加-c不然会生成可执行文件
3:ar 命令生成静态库
4:引用静态库
编写头文件:001_test.hpp
/* * 001_test.hpp * * Created on: 2015年11月24日 * Author: liug */ #ifndef _001_TEST_HPP_ #define _001_TEST_HPP_ #include "stdio.h" #include "stdlib.h" class testLib001 { public: testLib001(); ~testLib001(); int GetSum(int iFirst,int iSecond); private: int m_iIndex; }; #endif /* 001_TEST_HPP_ */
编写001_test.cpp
#include "001_test.hpp" testLib001::testLib001():m_iIndex(0) { }; testLib001::~testLib001() { }; int testLib001::GetSum(int iFirst,int iSecond) { return iFirst + iSecond; }
编译成静态库:
[root@localhost libtest]# gcc -c 001_test.cpp
会生成001_test.o
[root@localhost libtest]# ar -crv lib001_test.a 001_test.o
-c表示创建库
-r表示插入成员类或函数
-v表示更新版本
可以用命令:man ar查看
生成lib001_test.a静态库
最后使用静态库:
编写main.cpp
#include "001_test.hpp" int main(int argc, char* *argv) { testLib001 t001Lib; int iFirst = 10; int iSecond = 20; printf("Sum = %d\n",t001Lib.GetSum(iFirst,iSecond)); return 0; }
链接编译可执行文件001_test
[root@localhost libtest]# g++ -L/data/XXXX/XXXX/test/libtest -g3 -Wall main.cpp -o 001_test.dbg lib001_test.a
-L指定静态库路径
-g3生成可调试文件,可以用gdb调试
-Wall编译打印所有警告信息
还有药用g++编译,要是用gcc编译可能报错,以下是错误信息,可能是gcc不支持
[root@localhost libtest]# gcc -L/data/qmonster/liugao/test/libtest -g3 -Wall main.cpp -o 001_test lib001_test.a
/tmp/cc4QhyKL.o:(.eh_frame+0x13): undefined reference to `__gxx_personality_v0'
lib001_test.a(001_test.o):(.eh_frame+0x12): undefined reference to `__gxx_personality_v0'
collect2: ld returned 1 exit status
执行结果:
[root@localhost libtest]# ./001_test
Sum = 30
希望给新手有些帮助,也给自己留下笔记查看。。。
参看文章:/content/3614369.html
相关文章推荐
- CentOS Linux 上安装svn服务器
- Linux学习笔记4
- Linux 常用命令
- Linux.BackDoor.Gates/Chikdos Attack And Defense Analysis
- Linux下基于net-snmp的Agent扩展开发
- 用 Aptik 备份你的 Linux 桌面的应用和设置
- Linux实验二报告
- Linux常用命令大全
- 自定义Linux 内核驱动模块的编译
- Linux ldconfig命令
- linux 进线程间通信
- 在linux的环境下 连接深澜校园网的方法
- Linux学习 - Ubuntu 14.04配置Opencv环境
- Linux进程调度策略
- Laravel 5.1 超级大坑 CentOS 7 文件路径大小写敏感造成的Migrate异常
- linux socket
- arm-linux3.0自定义系统调用
- linux 多线程编程
- centos下怎样安装pip
- Linux学习笔记2-----Linux OS的文件目录