中国IT动力,最新最全的IT技术教程
最新100篇 | 推荐100篇 | 专题100篇 | 排行榜 | 搜索 | 在线API文档
首 页 | 程序开发 | 操作系统 | 软件应用 | 图形图象 | 网络应用 | 精文荟萃 | 教育认证 | 硬件维护 | 未整理篇 | 站长教程
ASP JS PHP工程 ASP.NET 网站建设 UML J2EESUN .NET VC VB VFP 网络维护 数据库 DB2 SQL2000 Oracle Mysql
服务器 Win2000 Office C DreamWeaver FireWorks Flash PhotoShop 上网宝典 CorelDraw 协议大全 网络安全 微软认证
硬件维护  CPU  主板  硬盘  内存  显卡  显示器  键盘鼠标  声卡音箱  打印机  机箱电源  BIOS  网卡  C#  Java  Delphi  vs.net2005
  当前位置:> 程序开发 > 编程语言 > 综合其它
gcc 学习笔记-创建静态库-创建动态库
作者:未知 时间:2005-07-27 23:27 出处:CSDN 责编:chinaitpower
              摘要:gcc 学习笔记-创建静态库-创建动态库

// "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下才能运行程序


关闭本页
 
首页 | 投资与合作 | 服务条款 | 隐私政策 | 收藏本站 | 设为首页 | 新用户注册 | 免责声明 | 使用帮助
Copyright ©2005-2008 chinaitpower.com All rights reserved. www.chinaitpower.com 版权所有