ITPub博客

首页 > Linux操作系统 > Linux操作系统 > WINDOWS工程到LINUX下移植日记(1)

WINDOWS工程到LINUX下移植日记(1)

原创 Linux操作系统 作者:oldzhuang 时间:2010-05-12 21:10:32 0 删除 编辑
最近在做移植工作,平台原来是在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了

来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/10945710/viewspace-662547/ ,如需转载,请注明出处,否则将追究法律责任。

下一篇: scn
请登录后发表评论 登录
全部评论

注册时间:2010-04-03

  • 博文量
    9
  • 访问量
    10082