蒹葭的小窝

蒹葭苍苍,白露为霜;所谓伊人,在水一方

mingw编译pwlib

pwlib是个跨平台的底层库,提供很多功能,最近想试试opal和openh232,需要用到这个库。

首先看看别人的编译成果,大部分都是在vc下编的。google一下就有很多。

首先需要bison+flex(不知道是干什么的,bison在编译时会生成一些源文件),放到path里。借鉴别人的:

4a.安装GNU bison
     GNU bison工具是编译PWLib所必须的.而GNU flex 并不是所有的人需要,除非你想重新编译"asnparser"工具(asnparser是用来改变OpenH323提供的ASN文件的).
     [url=http://www.voxgratia.org/bin/flexbison.zip]这里[/url]提供这两个工具的预编译版本。下面是工具的安装步骤:
     解压这2个预编译工具在"C:/"下(或者你选择的目录),这样就会创建"C:/Tools"这个目录,并在这个目录下有"FLEX.EXE"和"BISON.EXE"两个文件,并在"C:/TOOLS/SHARE"目录下有"BISON.SIMPLE"和"BISON.HAIRY".

然后

./configure + make

make时bison生成的getdate.tab.c会报错,是yyerror和yyparse2个函数定义有点问题(重复定义了),屏蔽多于的定义即可。

关键在编完后没有动态库lib文件,只有一个dll和3个libpt_mingw_x86_r.dll.1.10.3.x文件,

静态库为libpt_mingw_x86_r_s.a。

不知道怎么回事,下了个测试程序:

#include <ptlib.h>                        //所用使用PWLib都用包含的头文件

class Hello : public PProcess          //继承主线程类PProcess
...{
  PCLASSINFO(Hello, PProcess)     
//连接PProcess的运行时函数
  public:
        
void Main();                          //主线程是从PProcess的Main()开始的
}
;

PCREATE_PROCESS(Hello)           
//定义Main()函数和初始化Hello类

void Hello::Main()
...{
  cout 
<< "Hello world! ";     
}


静态库生成的文件有1.2m(strip后)。有点恐怖了。

4.9补充:

在make/lib.mak中可以设置动态库的输出 -wl,--output-lib=..... 这样就可以产生动态库。另外动态库的生成有一些ln命令,在windows上没有什么作用,直接生成dll即可。

 

阅读更多
想对作者说点什么? 我来说一句

没有更多推荐了,返回首页

加入CSDN,享受更精准的内容推荐,与500万程序员共同成长!
关闭
关闭