上午开个大半个上午的会
下午本想针对要做的事儿写出个初步的模型来,结果光是环境就折腾了大半天,万恶的移植
遇到的问题主要有:
osx中的g++的库文件跟linux有什么不同,发现找了半天没找到的一个so文件被我改成dylib文件就成了,还有其他不同的地方吗?
找到了一篇不错的文,虽然有点一知半解,大致了解了linux体系中的二进制文件采用的是ELF格式,而mac中采用的是Match-O格式。在elf格式中,shared libraries 和 loadable module是一样的。但是在Match-O体系中,这两个东西是有着严格区别的。
前者用otool显示出来的类型是DYLIB,后缀是dylib,只能静态链接,如果用dyld API的话可以动态加载。 * 后者叫做bundles,虽然mac推荐用.bundle的后缀,无奈linux党太强大了,还是缀以了so。在mac中bundle只能动态加载和反加载(也要用dyld),不能链接。
然后就是一大堆例子了。。。感觉mac下的东西很难用的样子。
还有就是boost的具体功能是什么,与stl的异同在哪里?另外就是几个不明所以的库,libev和libevent?估计查查manual就可以了 boost 就是一组功能性的程序库,广泛采用template实现,也许这是跟stl唯一的相同点吧。。。
libev是Marc Lehmann用C写的高性能事件循环库。通过libev,可以灵活地把各种事件组织管理起来,如:时钟、io、信号等。libev在业界内也是广受好评,不少项目都采用它来做底层的事件循环。 libevent是一个异步事件处理软件函式库,以BSD许可证发布。
libevent提供了一组应用程序编程接口(API),让程式设计师可以设定某些事件发生时所执行的函式,也就是说,libevent可以用来取代网络服务器所使用的事件循环检查框架。
由于可以省去对网络的处理,且拥有不错的效能,有些软件使用libevent作为网络底层的函式库,如:memcached、Tor。
好吧,模型的事儿就明早折腾吧,最基础的设施刚刚搭建起来,还不确定能不能用......