工作上需要做windows和linux的C++跨平台,虽说C++在两个系统下是完美支持的但之间还是有点区别,特别是如果要使用到系统资源的时候更是,这时那就不可避免的开始一大堆宏定义,这个我肯定写不好而且浪费时间!于是想找一个平台抽象库,屏蔽两个操作系统之间的差异,当然只是包含最基本的如文件、内存、线程、网络等等。最开始的时候也考虑到用boost、qt之类的但考虑到有点大而且公司不一定愿意添加这个进去,多半会增加完全不必要的工作量,然后也搜索到其他一些简单的跨平台库,但都很专一仅仅是涉及到一个方面,也不能保证稳定性。所以最终朋友介绍NSPR给我!
Netscape Portable Runtime (NSPR) 提供一套面向系统级的与平台无关的 API 和类似于libc的函数. 这些API被用在Mozilla客户端, Red Hat公司、Sun公司的服务应用程序以及其他公司的一些软件中。
编译
On Windows, the NSPR build system needs GNU make and a Unix command-line utility suite such as MKS Toolkit, Cygwin, and MSYS. The easiest way to get these tools is to install the MozillaBuild package.在windows上编译NSPR需要GNU和Unix环境套件如MKS、Cygwin、MSYS。不过最好的方式是下载MozillaBuild开发包(下载地址,详细的开发包说明点这里:)。
NSPR工程下载地址:https://ftp.mozilla.org/pub/mozilla.org/nspr/,包含说明文档和源码。
1、解压NSPR到某目录(建议根目录下),安装MozillaBuild开发包;
2、打开MozillaBuild开发包安装目录,发现里面有很多start-msvcXX.bat(XX代表VS编译器的版本号,注意VS是32 or 64位!),然后用cd切换到NSPR的解压目录;
3、新建一个目录用来编译、链接,具体方式可参考官方的指导
# check out the source tree from CVS
cvs -q -d :pserver:anonymous@cvs-mirror.mozilla.org:/cvsroot co -r NSPR_4_8_RTM mozilla/nsprpub
# create a build directory
mkdir target.debug
cd target.debug
# run the configure script
../mozilla/nsprpub/configure [optional configure options]
# build the libraries
gmake
# build the test programs
cd pr/tests
gmake
说明:#号后是注释,cvs这条指令是下载(由于已经下载可以跳过),其他的应该能看懂吧?下面说说configure几个重要选项
1、--disable-debug --enable-optimize:Specify these two options to generate an optimized (release) build.These two options can actually be used independently, but it's not recommended. configure默认是生成debug的,如果需要release则需要加上这两个选项。
2、更多的选项说明看这里: https://developer.mozilla.org/en-US/docs/NSPR_build_instructions。
3、需要说明的是,上述链接里提到的32、64位环境是指vs是32 or 64,不是指windows操作系统是多少位。
使用
2、使用时,先包含头文件和.lib,运行时拷贝dll。(我目前还不知道这三个dll的关系:(,后面我搞清楚了会写在博客里的 )。