VC6.0代码转移到CentOS下步骤
来源:互联网 发布:卓知中华好字通价格 编辑:程序博客网 时间:2024/05/21 11:37
算法移植建议流程
一、 系统环境
1、 安装系统
CentOS 5.5 (默认安装即可,无需更新,更新也可)
2、 安装编译环境(在登陆root账户下,进行程序安装;确保可以链接网络,大部分程序可以网上自动安装)
(1) 安装C++编译器(g++)
终端输入:yuminstall gcc gcc-c++
(2) 安装生成makefile文件的工具autotools
终端输入:yuminstall autoconf
终端输入:yuminstall automake
终端输入:yuminstall libtools
(3) 集成开发环境IDE采取系统自带文本编辑器gedit
相关插件(linux_tools_cjs/gedit)已整理好,gedit文件夹拷贝至/home/用户名/.gnome2下。
(.gnome2是隐藏文件夹,在/home/用户名/下Ctrl+H即可出现隐藏文件)
Gedit很强大,可熟悉使用。
二、 Windows下工作(以PCA为例)
1、 将Windows下的算法程序首先修改为windows下命令行调用的形式
命令行工程类型采取win32console Application-An application that support MFC即可,在该工程中尽量少用MFC类,但可能不可避免,这些都可以在下一步进行消除。(PCA-M_Fusion-FusionPCA)
2、 统计该工程所涉及的动态库,将这些动态库与工程按照原文件夹格局建立一个简洁的、仅完成该算法的IRSAPCA。(完成统计整理工作后,大家讨论一下,有些底层动态库是公用的,可以分工合作完成,避免2个版本的可能)(PCA涉及gdal、FindSameRegionDll、fusionbaseonPCADll、ZoomDll、ZoomGeoDll、EIGEN、GJCPEG、tinyxml、GeneralFunction;这些库都按照原位置进行放置)
3、 整理完成该算法程序的单独大工程后,将该大工程,拷贝到linux下。进行下一步工作。
三、 Linux下工作(编译最好在普通用户权限下进行,即非root用户)
1、 在linux下,工程只需留下.h.cpp文件,其他删除。从库开始编译。以ZoomDll为例,在该文件下终端输入:g++ -Wall ZoomDll.cpp –L../../lib/gdal/-lgdal –ldl –o ZoomDll.a 该指令是用g++编译器,打开-Wall编译警告功能,编译ZoomDll.cpp(不需要添加头文件),添加库文件搜索目录–L../../lib/gdal/,添加库-lgdal –ldl,生成名为ZoomDll.a的静态库。(其他指令参看An_Introduction_to_GCC_中文.pdf)
2、 所有库编译通过后,开始编译程序,指令与编译库类似,以FusionPCA为例,指令输入g++ -Wall FusionPCA.cpp -L../../lib/gdal/ -lgdal -L../../M_IP_IMAGECOMPUTE/FindSameRegionDll/-lFindSameRegionDll -L../fusionbaseonPCADll/ -lFusionbaseonPCADLL -L../../M_IP_GEOMETRYTRANS/ZoomGeoDll/-L../../M_IP_GEOMETRYTRANS/ZoomDll/ -lgdal -lZoomDll -lZoomGeoDll -L../../M_BASEFORALL/EIGEN/ -leigen -L../../M_BASEFORALL/GJCPEG/ -lgjcpeg -L../../M_BASEFORALL/tinyxml/ -ltinyxml -ldl -g -oFusionPCA
3、 在编译工程中较容易遇到的问题,替换相关类或数据类型(注意编译器严格检查大小写)
Windows
linux
BOOL
bool
CString
char *或string(#include<iostream> using namespace std):文件名用string代替,其他用char*,视情况而定
FALSE/TRUE
false/true
DWORD
Unsigned long
ZeroMemory(pBuf,dwBufBytes);
memset(pBuf,0,dwBufBytes);
还有其他函数等应用问题,可先大家讨论,若已改写就可用,若未改写再进行改写。
已有投影复制、删除文件、获得后缀名判断数据类型、Xml读写、查询等函数。若有需要可直接复制。
四、 程序规范化实现。使用autotools建立makefile,实现程序或库的自动编译。(该工程可以与第三步同时进行)(以ZoomDll为例)(autotools详细介绍参考使用Automake,Autoconf生成Makefile+.doc)
1、建立一个Makefile.am文件,有如下内容
lib_LIBRARIES = libZoomDll.a 库名称
libZoomDll_a_SOURCES = ZoomDll.cpp 库cpp文件
libZoomDll_a_LIBADD =../../lib/gdal/libgdal.a 引用库
程序FusionPCA内容如下(可与上一步的命令行进行类比)
bin_PROGRAMS = FusionPCA
FusionPCA_SOURCES = FusionPCA.cpp
FusionPCA_LDADD = ../../lib/gdal/libgdal.a../../M_IP_IMAGECOMPUTE/FindSameRegionDll/libFindSameRegionDll.a../fusionbaseonPCADll/libFusionbaseonPCADLL.a../../M_IP_GEOMETRYTRANS/ZoomGeoDll/libZoomGeoDll.a../../M_IP_GEOMETRYTRANS/ZoomDll/libZoomDll.a../../M_BASEFORALL/EIGEN/libeigen.a ../../M_BASEFORALL/GJCPEG/libgjcpeg.a../../M_BASEFORALL/tinyxml/libtinyxml.a../../M_BASEFORALL/GeneralFunction/libgeneralfunction.a –ldl
2、在库文件夹下运行autoscan,生成文件configure.scan。将AC_INIT(FULL-PACKAGE-NAME,VERSION,BUG-REPORT-ADDRESS)替换为
AC_INIT(ZoomDll, 1.0, haojknm@126.com)
AM_INIT_AUTOMAKE
AC_PROG_RANLIB
然后,将configure.scan重命名为configure.ac
3、根据Makefile.am生成Makefile文件,输入以下命令
aclocal
autoheader
autoconf
automake --add-missing(若提示缺少文件,再输入touch NEWS AUTHORSChangLog)
4、 程序编译通过后,输入
./configure
./FusionPCAcjs.xml out.xml
- VC6.0代码转移到CentOS下步骤
- win7下安装vc6.0步骤
- vc6.0 ado 连接SQLserver2008详细步骤和代码
- VC6程序要求提升管理员权限,转移到VS2010出错
- linux(centos)下安装git并上传代码些许步骤(亲自验证过的步骤)
- VC6.0代码移植到VC8.0问题
- VC6.0代码升级到VS2010 (1)
- VC6.0代码升级到VS2010 (2)
- VC6.0对话框移植到VS2005平台下
- vc6.0移植到vs2008下问题总结
- TFS2010迁移(转移到新服务器)简单步骤
- QTCreator项目转移到VS项目步骤、中文乱码解决方案
- linux下前台程序转移到后台
- 特权级0的代码到特权级3代码的转移之IRET指令
- VC6.0在win7环境下代码提示智能化
- Centos下安装QQ2012步骤
- CentOS下安装Nginx步骤
- CentOS下ftp安装步骤
- ASP.NET图片处理问题总结
- 草根创业生存术:摆正心态
- 特殊符号的英文读法
- 如何读写共享参数的值?
- #2003 – 服务器没有响应 MySQL 无法启动
- VC6.0代码转移到CentOS下步骤
- 起码我们曾经爱过,不是吗
- 关于软件工作者的分类(摘)
- 鸿雁
- 拿什么拯救你 我的“游戏寡妇”、“游戏孤儿”们
- Top 10 Free Website Speed Testing Tools
- CDMA (Code Division Multiple Access)
- 黑白遐想的伤感情侣日志发布:故作坚强的姿态 我始终放不下来
- JS继承