gcc 学习笔记-创建静态库-创建动态库

王朝c/c++·作者佚名  2006-01-09
宽屏版  字体: |||超大  

// "SayHello.h"

class SayHello{

public:

void say();

void sayhi();

};

//SayHello.cpp

#include "SayHello.h"

#include <iostream>

using namespace std;

void SayHello::say(){

cout<<"hello"<<endl;

}

//SayOther.cpp

#include "SayHello.h"

#include <iostream>

using namespace std;

void SayHello::sayhi(){

cout<<"hi"<<endl;

}

//Main.cpp

#include "SayHello.h"

int main(){

SayHello* sayHello=new SayHello();

sayHello->say();

sayHello->sayhi();

return 0;

}

创建静态库

用 -c 参数生成目标文件但不链接

g++ -c SayHello.cpp g++ -c SayOther.cpp

这样各生成一个 .o 的文件

打成静态库名为 libHello.a

ar -r libHello.a SayHello.o SayOther.o

这样当 Main.cpp 用到库时就这样编译

g++ Main.cpp libHello.a -o Main 就会生成名子为 Main 的可执行文件

创建动态库

同样先生成目标文件不链接

g++ -c -fpic SayOther.cpp

g++ -c -fpic SayHello.cpp

-fpic 的意思是位置独立代码 ,指示编译程序生成的代码要适合共享库的内容这样的代码能够根据载入内存的位置计算内部地址

然后打包 生成动态库

g++ -shared SayHello.o SayOther.o -o libHello.so

当有程序用到它时就这样编译

g++ Main.cpp libHello.so -o Main

为了运行程序必须安装共享库以保证程序运行时可以找到该共享库

可以将库放在 /usr/lib 或 /lib下才能运行程序

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
© 2005- 王朝网络 版权所有