最近在做移植工作,平台原来是在WINDOWS下跑的,开发环境是古老的VC6.0(嘿嘿,本人也就用过VC这个版本)。由于是底层代码,基本是用纯C++写的,对WINDOWS的系统函数依赖性也不大,因此移植难度并不是很大。移植方式是VC工程直接用ECLIPSE编译,并不是想用ECLIPSE来开发,只是借用其生成的MAKEFILE(感觉其生产的MAKEFILE组织的很好,没用过其他的自动生成工具),
然后到生成的DEBUG目录下调试编辑工具选用的是gedit,个人感觉gedit还不错,关键字高亮,比vi好用。(eclipse很慢,不支持gb2312编码,因此WINDOWS下的工程中文注释在eclipse是乱码)
依赖WINDOWS部分的基本都是宏定义的方式解决。
1、LINUX下无strlwr和strpur函数,自己实现即可
2、hash_map在LINUX中加入
#include
using std::hash_map
可能编译时可能不识别hash_map,因为hash_map是后来才加到STL中的,所以可以尝试
(1) 加入using namespace __gnu_cxx
(2) 或者添加
#include
using namespace stdext;
3、## 符号,似乎gcc中不能毗连::和某个字符
例如 #define __STLP(name) std::##name 编译报错,VC倒是成功的。
4、文件的操作和动态库相关的几个函数比较好替换,LINUX下都有对应的函数可调用。
5、动态库的加载路径,目前可使用的是在/ext/ld.so.conf.d目录下建一个文件xx.conf
文件的内容是so文件所在路径,以root身份运行ldconfig,去了解一下LINUX动态库搜索顺序,还有好几种方法。
6、如果A动态库已经注册到系统中,B依赖于A,在编译B时,无需将A加入也可成功,然后,建立C,C是运行程序,编译时,必须将B加入,如果再编译B时没有把A加入,在编译C时也的加入A.
最近都没什么时间学习ORACLE了
然后到生成的DEBUG目录下调试编辑工具选用的是gedit,个人感觉gedit还不错,关键字高亮,比vi好用。(eclipse很慢,不支持gb2312编码,因此WINDOWS下的工程中文注释在eclipse是乱码)
依赖WINDOWS部分的基本都是宏定义的方式解决。
1、LINUX下无strlwr和strpur函数,自己实现即可
2、hash_map在LINUX中加入
#include
using std::hash_map
可能编译时可能不识别hash_map,因为hash_map是后来才加到STL中的,所以可以尝试
(1) 加入using namespace __gnu_cxx
(2) 或者添加
#include
using namespace stdext;
3、## 符号,似乎gcc中不能毗连::和某个字符
例如 #define __STLP(name) std::##name 编译报错,VC倒是成功的。
4、文件的操作和动态库相关的几个函数比较好替换,LINUX下都有对应的函数可调用。
5、动态库的加载路径,目前可使用的是在/ext/ld.so.conf.d目录下建一个文件xx.conf
文件的内容是so文件所在路径,以root身份运行ldconfig,去了解一下LINUX动态库搜索顺序,还有好几种方法。
6、如果A动态库已经注册到系统中,B依赖于A,在编译B时,无需将A加入也可成功,然后,建立C,C是运行程序,编译时,必须将B加入,如果再编译B时没有把A加入,在编译C时也的加入A.
最近都没什么时间学习ORACLE了
来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/10945710/viewspace-662547/,如需转载,请注明出处,否则将追究法律责任。
转载于:http://blog.itpub.net/10945710/viewspace-662547/