精华内容
下载资源
问答
  • 移植器的组态支持移植到基于Windows系统.pdf 介绍了关于移植器的组态支持移植到基于Windows系统的详细说明,提供其它产品的技术资料的下载。
  • 此文档经本人亲测,移植成功后编制的手册,现分享出来让喜欢自己制作或者移植鼠标指针的人做为引路书,按文档里一步步来你一定可以将linux上喜欢的鼠标主题移植windows系统上进行安装使用。
  • 移植器的组态支持移植到基于Windows系统pdf,移植器的组态支持移植到基于Windows系统
  • 喜欢windows 系统的手机用户,经常遇到要移植XIP,这个工具可以帮你的忙。可以轻松移植XIP,从此让XIP移植快乐起来。
  • 本次主要针对Windows系统下的Mantis、Testlink服务器进行移植移植到Ubuntu系统。使用XAMPP工具搭建Mantis、Testlink必备的运行环境,使用MySQL数据库存储数据。 二、 使用资源 1、 Ubuntu:基于Linux的操作系统...

    一、 背景

    本次主要针对Windows系统下的Mantis、Testlink服务器进行移植,移植到Ubuntu系统。使用XAMPP工具搭建Mantis、Testlink必备的运行环境,使用MySQL数据库存储数据。

    二、 使用资源

    1、 Ubuntu:基于Linux的操作系统。

    2、 XAMPP:一个把Apache网页服务器与PHP、Perl及MySQL集合在一起的安装包,允许用户可以在自己的电脑上轻易的建立网页服务器。

    3、 SQLyog:一个易于使用的、快速而简洁的图形化管理MYSQL数据库的工具,它能够在任何地点有效地管理你的数据库。

    4、 MySQL数据库:一个小型关系型数据库管理系统,其体积小、速度快、总体拥有成本低,尤其是开放源码这一特点,许多中小型网站为了降低网站总体拥有成本而选择了MySQL作为网站数据库。

    三、 移植流程简介

    导出Windows服务器下的mantis、Testlink数据库-->制作Ubuntu系统U盘启动盘-->BIOS设置从U盘启动-->Ubuntu系统安装-->Mantis安装/配置/导入原有备份数据-->Testlink安装/配置/导入原有备份数据-->其他:安装ssh、设置xampp服务开机自启动。

    四、注意项

    1 导出Windows服务器下的Mantis、Testlink数据库

    这是很重要的一步,用于Ubuntu服务器搭建好后数据库的还原。由于Mantis、Testlink的数据库都是使用Mysql,所以可用SqlYog工具对数据库进行导出。

    1、使用SqlYog连接数据库后,鼠标右键选择目标数据库à备份/导出à转储SQLà选择导出路径和转储的SQL文件名,其他项默认(图1)。

    2、当数据库表格损坏时,可能会出现导出错误的情况,此时可用命令修复表格: repair table 表名;


    图1


    2 安装Ubuntu系统

    若电脑硬盘是全新的,或者之前处理过,没有任何数据,界面如下:

     

    若硬盘有数据,通常是别的操作系统,其界面可能如下:


    选择“其他选项”,我们自己来处理硬盘分区,按照服务器的具体需求来设定。点击“继续”,进入下一步,处理硬盘分区。

     

    3 还原原有数据库到Ubuntu服务器

    把备份的SQL数据文件拷贝到Ubuntu系统下再进行数据导入会较为麻烦,最简单的办法是在Windows系统下使用SqlYog工具远程连接Ubuntu系统下的Mantis、TestLink数据库,进行数据导入。

    1、使用SqlYog连接Ubuntu系统下的目标数据库,鼠标右键分别选择Mantis、TestLink数据库,选择“执行SQL脚本”即可还原。

    2、导入时由于MySQL数据库版本的兼容性差异可能会出现错误提示,此时可用SqlYog打开SQL文件,然后点击“执行所有查询”即可完成数据还原(需删除Mantis、TestLink安装时自动生成的数据库)。

    4 安装SSH

    SSH和Telnet差不多,都是远程登录客户端,只不过SSH更安全(加密方式), Telnet是明文传输。

    1、使用sudo apt-get install openssh-server命令安装,当提示安装包不存在,可使用命令sudoapt-get update 更新下载数据。

    2、如果提示更新失败,则:

    (1) 打开源列表:sudo gedit /rtc/apt/source.list

    (2) 把http://us.archive.ubuntu.com改为:http://old-releases.ubuntu.com/ubuntu

    (4) 再执行:sudo apt-get update更新缓存。

    (5) 接着重新执行安装命令。

    5 开机自启XAMPP服务。

    方法一:

    (1)在/etc/init.d 目录下创建lampp.sh 文件,然后添加以下内容:

    #!/bin/sh

    /opt/lampp/lampp start

    (2)给予lampp.sh权限:chmod 755 /etc/init.d/lampp.sh   

    (3)vi  /etc/init.d/rc.local 在最后一行加上:

     sh /etc/init.d/lampp.sh 或exec /etc/init.d/lampp.sh

    注:这种方法即使开机后没有登录,XAMPP还是会启动。

    (4)重启ubuntu系统。

    方法二:

    执行以下命令

    (1)sudo ln -s /opt/lampp/lampp /etc/init.d/lampp

    (2)  sudo update-rc.d -f lamppdefaults

     

    6 Mantis配置

    在linux界面下安装完成Mantis后需要对其进行配置。

    1Mantis 配置文件:

    (1) config_inc.php                           存放路径:/opt/lamp/htdocs/mantis

    (2) config_defaults_inc.php           存放路径:/opt/lamp/htdocs/mantis

     

     

      config_inc.php 是用户自定义的参数配置文件,config_defaults_inc.php系统默认的参数配置文件。系统会先读取 config_inc.php的配置,然后读取config_defaults_inc.php的配置。两个文件同时生效,起到互补的作用。config_defaults_inc.php会补充config_inc.php中缺少的参数。当两个文件同时存在某项参数时,以config_inc.php为准。

     例:

     config_defaults_inc.php              config_defaults_inc.php

      $g_db_username=’zhangsan’;        $g_db_username=’lisi’;   

      $g_db_password=’123456’;            $g_db_password=’789’;

                                                                      $g_db_type =’mysql’;

     

    实际生效:

    $g_db_username=’zhangsan’;

    $g_db_password=’123456’;

    $g_db_type =’mysql’;

    2、新建角色

    Mantis缺省“测试人员”角色,只有“报告员”角色。报告员角色的权限较低,如无法删除问题等等。也可以给其分配更多权限,

    但还是建议有必要创建“测试人员”角色,毕竟。还有给匿名用户新建一个匿名用户权限。

      在config_inc.php中,加入

    $g_access_levels_enum_string = '5:匿名用户,10:复查员,25:报告员,40:修改员,55:开发人员,60:测试人员,70:经理,90:管理员';

      在lang目录的strings_chinese_simplified.txt中,查找并修改

    $s_access_levels_enum_string = '5:匿名用户,10:复查员,25:报告员,40:修改员,55:开发人员,60:测试人员,70:经理,90:管理员';

     

    五、总结

        以上是在移植过程中最容易出错的点,要特别的注意,其余的安装教程在网上都可以找到,这里不再赘述。




    展开全文
  • WindowsCE系统开发及bootloader移植.pdf
  • Qt应用如何移植Windows CE系统

    千次阅读 2015-11-17 22:30:49
    在刚学习Qt时,一直以为Qt良好的跨平台移植性会成为很火的编程语言,可是随着诺基亚的衰落发现自己错了,而且它的移植性也没有想象中的那么好,要不是毕业设计需要用到,本人早已放弃,下面我将一个多月时间查阅各种...

            在刚学习Qt时,一直以为Qt良好的跨平台移植性会成为很火的编程语言,可是随着诺基亚的衰落发现自己错了,而且它的移植性也没有想象中的那么好,要不是毕业设计需要用到,本人早已放弃,下面我将一个多月时间查阅各种文献资料摸索出来,并实际操作成功的移植方法分享给大家。

            本移植方法的主要思路参考了http://blog.csdn.net/jdh99

            移植所需的软件大多数可在网上下载到(VS开发工具及相应补丁包、Qt开发工具及库文件),只是WinCE的软件需要在开发板附带的光盘中找,也可到飞凌开发板官网上下载。

    一、 准备工作

             操作系统环境:Windows 7 旗舰版 x64
             PC端编译环境:VS2005 中文版
             嵌入式运行环境:WinCE6.0(运行于飞凌OK6410 ARM11 开发板)      

            Qt相关软件:

            Qt库包:  qt-everywhere-opensource-src-4.7.3.zip  //嵌入式WinCE版
                            qt-win-opensource-4.7.3-vs2008.exe  //Windows PC版

            Qt在VS中的辅助插件:qt-vs-addin_opensource_qt4

    二、软件安装
    1)VS2005安装顺序:
    1、vs2005(chs_vs_2005_Pro_90_Trial)
    2、Visual Studio 2005 Service Pack1(VS80sp1-KB926604-X86-CHS)
    3、Visual Studio 2005 Service Pack1 Update for Windows Vista(VS80sp1-KB932230-X86-CHS)
    4、Visual Studio 2005 Service Pack1 ATL Security Update(VS80sp1-KB971090-X86-INTL)
    5、qt-vs-addin_opensource_qt4

    2)WinCE安装顺序:
    1、Windows Embedded CE 6.0
    2、Windows Embedded CE 6.0 Platform Builder Service Pack 1
    3、Windows Embedded CE 6.0 R2
    4、Windows Embedded CE 6.0 R3
    5、TE6410_CE6_SDK
    (针对飞凌OK6410 ARM11 开发板)
    三、针对WinCE的qt库配置编译
    1、解压qt-everywhere-opensource-src-4.7.3.zip到e:盘下qt_wince文件夹
    2、增加环境变量e:\qt_wince\bin
    3、修改E:\qt_wince\mkspecs\wince60standard-armv4i-msvc2005中的qmake.conf文件中的
                CE_SDK = TE6410_CE6_SDK   # replace with actual SDK name
    4、打开vs2005,打开工具->visual studio 2005 command prompt
    5、输入命令:cd E:\qt_wince
    6、输入命令:configure -platform win32-msvc2005 -xplatform wince60standard-armv4i-msvc2005.
       这一步是配置qt库,配置需要几分钟,配置成功会在E:\qt_wince\bin下面生成一些列工具.可以用checksdk.exe –list查看当前装的sdk版本.
    7、输入命令: set INCLUDE=E:\Program Files (x86)\Microsoft Visual Studio 8\VC\ce\include;E:\Program Files (x86)\Windows CE Tools\wce600\TE6410 Board\Include\Armv4i
    8、输入命令: set LIB=E:\Program Files (x86)\Microsoft Visual Studio 8\VC\ce\lib\armv4i;E:\Program Files (x86)\Windows CE Tools\wce600\TE6410 Board\Lib\ARMV4I
    9、输入命令: set PATH=E:\Program Files (x86)\Microsoft Visual Studio 8\VC\ce\bin\x86_arm;%PATH%
    10、输入命令: nmake
    四、针对Windows的qt库配置编译
    1、安装qt-win-opensource-4.7.3-vs2008.exe
    2、打开vs2005,打开工具->visual studio 2005 command prompt
    3、输入命令进入指定目录下:cd E:\Qt\4.7.3
    4、在文件夹中找到以下四个文件删除:E:\Qt\4.7.3\src\script\tmp\moc\debug_shared\mocinclude.tmp
                                                                 E:\Qt\4.7.3\src\script\tmp/moc\release_shared\mocinclude.tmp
                                                                 E:\Qt\4.7.3\src\3rdparty\webkit\WebCore\tmp\moc\debug_shared\mocinclude.tmp
                                                                 E:\Qt\4.7.3\src\3rdparty\webkit\WebCore\tmp\moc\release_shared\mocinclude.tmp
    5、编译:configure -debug-and-release -platform win32-msvc2005
    6、编译完成后nmake
    五、应用程序移植

    使用命令行方式编译应用程序:进入工程目录
    1)生成es.pro,输入命令:
         E:\qt_wince\bin\qmake.exe -project -o es.pro

    2)生成makefile文件,输入命令:
       E:\qt_wince\bin\qmake -spec E:\qt_wince\mkspecs\wince60standard-armv4i-msvc2005 -win32 -o Makefile es.pro
    3)设置环境变量,输入以下命令:
    set INCLUDE=E:\Program Files (x86)\Microsoft Visual Studio 8\VC\ce\include;E:\Program Files (x86)\Windows CE Tools\wce600\STANDARDSDK_600\Include\Armv4i
    set LIB=E:\Program Files (x86)\Microsoft Visual Studio 8\VC\ce\lib\armv4i;E:\Program Files (x86)\Windows CE Tools\wce600\STANDARDSDK_600\Lib\ARMV4I
    set PATH=E:\Program Files (x86)\Microsoft Visual Studio 8\VC\ce\bin\x86_arm;%PATH%
    4)编译嵌入式版本应用程序,输入命令:
    nmake release
    生成目标文件es.exe
    5)移植
    通过USB将目标文件es.exe和一些库文件一起拷贝到目标嵌入式控制器上放在同一目录下。所需的库文件及相应路径为:
    msvcr80.dll文件:Microsoft Visual Studio 8.0\VC\ce\DLL\armv4i
    QtCore4.dll、QtGui4.dll、QtSql4.dll:Qte安装目录下的的lib目录里

    注:以上qt至wince的移植中,如果“五、应用程序移植”nmake release时出错,可以通过编译工具VS2005及相关软硬件工具进行软件移植:
    1、辅助工具准备:飞凌嵌入式ARM板(OK6410)、网线、Win7系统与嵌入式设备同步软件(32位或64位)
    2、安装Win7系统与嵌入式设备同步软件(根据主机操作系统位数选择)
    3、用网线将PC机与ARM板连接,并断开PC机原有Internet网络
    4、交叉编译及移植步骤:
         1)在VS编译器中点击Qt下拉菜单,选择Open Qt Project File(.pro)并打开相应Qt项目
         2)在VS编译器中点击Qt下拉菜单,选择Qt Project Settings并选择Qt的嵌入式版本名称
         3)在VS编译器中点击工具下拉菜单,选择设备工具-设备-双击对应嵌入式设备名称,选择TCP连接传输
         4)配置使用指定的IP地址(192.168.1.*与设备IP地址一致且与电脑主机在同一网段)
         5)点击启动调试,过一会系统会将编译好的应用程序文件及相关库文件通过网线传输到ARM板中调试运行,在ARM板的显示屏上会显示Qt运行界面,表示移植成功。

            至此,Qt在Windows系统中开发出来的应用(一般用Qt Creator工具来开发)就可以顺利移植到装有WinCE系统的开发板上运行了。这恐怕是我见过的最繁琐的软件移植了。

    展开全文
  • db2数据库从AIX操作系统移植windows XP
  • Windows CE系统软件移植流程

    千次阅读 2009-10-15 15:19:00
    Windows CE(以下简称CE)是一个可定制的嵌入式操作系统,为了适应不同的硬件平台,需要对BSP、Device Driver、bootloader等进行修改、定制。本文主要讨论在BSP、driver等已完成的基础上如何移植,关于BSP、driver等...

    Windows CE(以下简称CE)是一个可定制的嵌入式操作系统,为了适应不同的硬件平台,需要对BSPDevice Driverbootloader等进行修改、定制。本文主要讨论在BSPdriver等已完成的基础上如何移植,关于BSPdriver等的定制在其他文档中详细描述。

    Microsoft为定制CE平台提供了一个集成开发工具——Platform Builder(以下简称PB),我们的工作都是利用这个工具完成的。另需注意,本文是以X-Hyper255B开发板为例进行说明的。

    1.       安装BSPBoard Support Packet

    为了定制CEBSP是必需的。BSP包括bootloaderkernelDevice driverconfiguration。在利用PB生成特定平台的CE之前,必须先安装针对该平台的BSP。例如,在安装完X-Hyper255B开发板的BSP后,在PBThird Party中会出现它的BSP

     

     

     2.       X-Hyper255B定制CE平台

    2.1.      创建一个新平台

    1.  PB中选择File->New Platform开始New Platform Wizard

    2.  BSP列表中选择“X-HYPER255BARMV4”。

    3.  后续步骤按向导的提示进行,比较简单,这里不再赘述。

     

    2.2.      设置平台参数

    在生成kernel image之前应该对平台进行一些设置。

    1.         如下图,右键单击选择“Settings…”(也可选择Platform->Settings

    2.         Build Options”选择页中选中“Enable Eboot Space in Memory”和“Enable Full Kernel Mode”。

     

    2.3.      生成Kernel Image

    1.         选择Build->Generate Platform Headers

    2.         选择Build->Build Platform

    3.     烧写EbootEthernet Bootloader

    与烧写FLASH有关的文件有4个:

      Jflash.exeFLASH烧写程序

      giveio.infgiveio.inigiveio.sysJTAG的驱动

    3.1.      Windows2000下安装JTAG的驱动

    1.         giveio.sys文件拷贝到C:/Winnt/System32/drivers目录下。

    2.         利用添加硬件向导安装驱动。

     

     

     

     

    3.2.      Eboot烧写进FLASH

    X-Hyper255B为例,在WINCE410/PLATFORM/X-Hyper255B/target/ARMV4/retail目录下找到eboot.nb0文件。启动开发板,使用Jflash.exe程序将其写入FLASH

    4.     下载kernel imagenk.bin

    4.1.      设置“超级终端”

    通常目标板会通过串口输出调试信息,用串口线连接PC机和目标板后,可以利用Windows的“超级终端”来查看。点击开始->程序->附件->通讯->超级终端,运行后需要对端口的波特率等进行设置,以X-Hyper255B为例,设置如下:

    4.2.      下载kernel image

    1.         运行“超级终端”后,启动开发板,按空格键进入bootloader设置。

        设置IP地址或DHCP确保6项为Program RAM image into FLASH:(Enabled),连好网线,然后选择D项开始下载。

    2.         PC机的PB中打开前面创定制的CE平台,选择Target->Configure Remote Connection of Platform Builder,配置如下:

     

            再点击Configure按钮,选择可用设备

     

            接着选择Target->Download/Initialize,开始下载nk.bin

     

    至此,定制的CE已经下载并写入了目标板的FLASH中。另外,有关开发板bootloader的具体设置请参阅开发板的用户手册。

     

    注:转自网上!

    展开全文
  • Windows移植FATFS

    2018-02-11 15:21:30
    将FATFS移植Windows,版本是FATFS 0.12,底层使用C语言库函数fread,fwrite,fopen实现,容易理解
  •  以下通过在wince系统下访问物理地址,来看看如何编写可移植性较好的应用程序。  首先必须明确两个概念。  1. 在X86平台下才有I/O地址这一说,在其他体系的CPU(如ARM/MIPS)下是没有I/O端口的。因为X86下把I/O...
  • 本文先介绍了samsung公司的S3C2410微处理器和嵌入式操作系统Windows CE 5.0 特性,分析BSP结构,在此基础上,通过bootloader, OAL, 触摸屏驱动的移植来具体探讨BSP移植过程。  1 引言  在当今后PC时代,嵌入式...
  • 介绍了数字电视发射机控制器系统中显示控制手柄所需Windows CE操作系统移植过程,根据显示控制手柄开发需要的硬件平台,提出了操作系统Windows CE的移植方案,详细介绍了系统开发移植过程中板级支持包的开发,包括...
  •  1 Windows CE系统和Platform Builder 4.2 Windows CE是微软推出的一个32位、多线程、多任务的嵌入式操作系统,是微软专门为信息设备、移动应用、嵌入式应用等设计的嵌入式模块型操作系统。用户可选择、组合和配置...
  • 本文分析了嵌入式操作系统Windows CE。NET的特点,并利用工具Platform. Builder 4。2完成了其在以ARM920T为核心的S3C2410处理器上的定制。  1 Windows CE系统和Platform. Builder 4.2  Windows CE是微软推出的一...
  • window10系统作为开发机,编辑制作的软件,如何脱离开发环境运行在ghost xp系统上?代码的修改?
  • linux代码移植windows

    千次阅读 2013-11-05 09:52:55
    Linux拥有丰富各种源代码资源,但是大部分代码在Windows平台情况是无法正常编译的。...本文将以一个实际的例子(Tar)来说明如何把Linux代码移植Windows平台上。移植过程将尽量少修改代码,以便代码的运行逻辑
    Linux拥有丰富各种源代码资源,但是大部分代码在Windows平台情况是无法正常编译的。Windows平台根本无法直接利用这些源代码资源。如果想要使用完整的代码,就要做移植工作。因为C/C++ Library的不同和其他的一些原因,移植C/C++代码是一项困难的工作。本文将以一个实际的例子(Tar)来说明如何把Linux代码移植到Windows平台上。移植过程将尽量少修改代码,以便代码的运行逻辑不会发生任何变动。保留绝大部分软件主要功能。 
    

    一.前言

      Linux拥有丰富各种源代码资源,但是大部分代码在Windows平台情况是无法正常编译的。Windows平台根本无法直接利用这些源代码资源。如果想要使用完整的代码,就要做移植工作。因为C/C++ Library的不同和其他的一些原因,移植C/C++代码是一项困难的工作。本文将以一个实际的例子(Tar)来说明如何把Linux代码移植到Windows平台上。移植过程将尽量少修改代码,以便代码的运行逻辑不会发生任何变动。保留绝大部分软件主要功能。

      二.准备工作

      Tar是Linux平台下面一个打包工具。移植这样一个程序到windows平台需要做那些工作呢?

      首先是一些准备工作,在Windows平台上面安装上Cygwin的最新版本,在Cygwin中安装好GCC等开发工具。 同样也需要一个Windows开发环境。可以使用最新版本Visual Studio, Microsoft Visual Studio .NET 2003。从www.gnu.org上取得Tar的最新源代码,版本是1.13。在Cygwin下面解开tar-1.13.tar.gz.源代码包。注意请不要在Windows下面使用WINRAR或者WINZIP来解压缩。 WINRAR和WINZIP在解压缩某些tar.gz包的时候会有问题。使得解包之后的目录和文件出现异常。如果是源代码包将有可能不能在Cygwin下面正确编译。解开压缩包之后,进入 tar-1.13目录,在当前的目录下面输入

    ./configure

      命令,运行完毕之后,再次输入

    make

      命令。开始编译tar的Cygwin版本。

      编译基本上不会有问题,进入src目录,可以看到新编译好的Tar程序tar.exe。

      Cygwin是一个API层的Linux模拟环境。如果能够在Cygwin下面编译,运行。实际上也就是能在Windows下面编译和运行,只是需要有一层中间API模拟某些Linux特有的操作。简单的判断一个Linux程序能不能移植到Windows平台下面,就是看是否能在Cygwin下面编译源代码,并运行程序。

      在Cygwin中编译Tar的源代码,判断能否移植只是其中一个原因。另外一个原因是移植代码过程中需要一个特殊的头文件config.h。config.h是移植过程中最重要的源代码文件。Config.h文件并不是源代码本身的一部分。文件是在Cygwin下面运行”./configure”命令时生成的。在Cygwin下运行”./Configure”命令时,会根据Cygwin平台开发环境生成config.h文件。编译时也需要config.h文件对代码编译项进行控制。移植工作也以config.h文件为基础。

      接下来就是构造Windows工程。先用Visual Studio .NET 2003创建一个空的工程(Project),命名为WinTar。根据Cygwin中的编译输出信息,Tar主要的代码在Src和lib两个目录中。把这两个目录复制到新工程里,并把代码加入到工程中。然后复制Config.h到WinTar工程目录下面。

      准备工作基本上完成了,接着就是移植。移植过程可以分为3个部分。

      三.第一个目标:使得WinTar能编译过(Compiler)

      第一个目标的完成主要围绕Config.h来实现。Linux下开发环境和Windows开发环境很大的不同是C Library头文件和各种类型的定义不同。而Config.h提供了完整编译开关来处理因为不同平台间开发环境不同带来的不同之处。现在需要手工去修改这个文件,以便Tar源代码能适应Windows平台。

      首先调整各种C Library头文件(Header File)的包含问题。在Config.h中定义了很多类似HAVE_XXXX_H。比如定义HAVE_CONFIG_H为1表示工程中可以使用config.h。

      #define HAVE_MALLOC_H 1表示可以在工程中使用Malloc.h头文件。通过调整这些定义值,可以去除一些Windows平台下面没有的头文件包含。也许其他地方还有很多头文件包含关系需要处理,但是这里的定义基本上解决了大部分的头文件包含问题。

    /* Define if you have the <linux/fd.h> header file. */
    /* #undef HAVE_LINUX_FD_H */

    /* Define if you have the <locale.h> header file. */
    #define HAVE_LOCALE_H 1

    /* Define if you have the <malloc.h> header file. */
    #define HAVE_MALLOC_H 1

    /* Define if you have the <memory.h> header file. */
    #define HAVE_MEMORY_H 1

    /* Define if you have the <ndir.h> header file. */
    /* #undef HAVE_NDIR_H */

      第二步,调整各种数据类型的定义,可能在linux下面会有很多特殊的数据类型定义,Config.h文件中也包含了一部分可以变动的数据类型定义项。这些定义一般都是基本数据类型的重定义。可以根据Windows平台下的数据类型定义情况进行修补。比如在Cygwin的开发环境中有个数据类型mode_t, Visual Studio的C Library中却(作者 很土,联系方法 jackforce at 163 dot com)找不到这样数据类型。Tar代码中使用了大量的mode_t数据类型. config.h中提供了修改项来让开发人员自己修改mode_t的定义,并提示如果mode_t在<sys/types.h>中没有定义的话,可以把他定义为int型。所以在config.h加上#define mode_t int。这样mode_t没有定义的问题就解决了。其他的数据类型也是同样对待处理。

    * Define to `int’ if <sys/types.h> doesn’t define. */
    #define mode_t int

    /* Define to `long’ if <sys/types.h> doesn’t define. */
    /* #undef off_t */

    /* Define to `int’ if <sys/types.h> doesn’t define. */
    #define pid_t int

      第三步,调整各种函数定义。在Config.h中除了HAVE_XXXXX_H之外还有一种预定义,HAVE_XXXX。 这是一些可选用函数定义开关。#define HAVE_MEMSET 1 表示工程中可以使用memset函数。也就是说工程用到的类库中已经实现了这个函数。如果没有,那么就需要#undef HAVE_MEMSET,当然也可以自己提供这些函数。

    /* Define if you have the memset function. */
    #define HAVE_MEMSET 1

    /* Define if you have the mkdir function. */
    #define HAVE_MKDIR 1

    /* Define if you have the mkfifo function. */
    #define HAVE_MKFIFO 1

    /* Define if you have the munmap function. */
    #define HAVE_MUNMAP 1

      最后,Config.h文件中除了上面的头文件,函数,数据类型编译选项之外,还有其他一些东西,比如环境变量,其他编译选项。这些内容会根据不同的项目而有很大的不同。但是可以从Config.h基本看出移植的工作量有多大。

      经过上面的调整之后,势必(作者很土,其他文章 请查看vchelp很土专栏)因为Windows环境下没有某些头文件,比如poll.h,就会没有poll函数,没有dirent.h 就会没有dirent 结构体。而继续使得WinTar编译不过。这个时候就需要根据具体的编译错误信息进行细节修饰。当需要使用Windows下一些特殊的定义的时候请不要忘了在Config.h的最前面加入#include <Windows.h>.
    关于细节修饰,举个例子来说明。比如有个选项HAVE_INTTYPES_H

    /* Define if <inttypes.h> exists, doesn’t clash with <sys/types.h>,
    and declares uintmax_t. */
    #define HAVE_INTTYPES_H 1

      通过分析代码可以发现,代码并不是需要一个完整的inttypes.h文件,而是为了一个uintmax_t的定义。在Visual Stdio的C Library中并没有inttypes.h这个文件,也没有uintmax_t这个定义。回溯Cygwin的include目录的inttypes.h文件,发现了uintmax_t的定义

    typedef unsigned long long uintmax_t;

      很简单的数据类型重定义。这么简单定义,完全可以从Cygwin的Include目录中单独拿出来做一个专用版本的inttypes.h加入到WinTar项目中。这样编译过程中uintmax_t没有定义的问题就解决了。解决这类问题的一般的做法也就是从Cygwin的Include目录里面拿出相关的头文件进行修改或者单独复制到WinTar的目录下面。[本文于2003年完成. 如需要转载 请联系jackforce at 163 dot com ]修改或者复制代码的原则是不再引入更多的定义或者头文件,仅取所需部分。其他类似的问题还有direct结构定义和相关函数。

      在编译过程中,很多错误是有由lib目录下的文件产生的,但是lib目录下的文件不是完全都需要的。lib目录只是一个对Tar的补充库。需要的代码才需要编译。 具体判断的方法一个是参考Windows C Library库的内容。如果同样的函数,数据类型已经定义,就不需要Lib目录中的相同数据类型的定义和函数实现了。还有一个方法是尽量去掉lib目录中的C文件,只保留头文件,并使得编译能够通过,根据link的错误信息去检查那些lib中的C文件是需要的。

      除了修改外围的各种头文件之外,还不要忘了修改工程的编译选项,特别是预定义选项。在Tar的移植过程就需要以下的预定义HAVE_CONFIG_H,_POSIX_SOURCE,MSDOS。HAVE_CONFIG_H 表示程序编译需要config.h文件。为了方便期间,在tar移植过程中就放到工程的预编译选项中了。MSDOS,移植的是Linux下的控制台程序,而Windows平台最接近Linux控制台就是DOS,特别是一些环境变量设置和全局常量的定义。Tar的有些代码针对MSDOS环境已经做了一部分修正,这点在移植过程中可以利用起来。还有一个可选项是__CYGWIN__。有些Linux程序会针对Cygwin平台做出代码上的特殊设定。当遇到这样的代码的时候,一定要加上__CYGWIN__预定义项,能够大大减少移植需要的工作量。还有就是移植过程引入的各种Cygwin代码中也可能需要__CYGWIN__定义(有时候是其他的定义,比如_POSIX_SOURCE,或者__INSIDE_CYGWIN__)。

      经过上述的几个步骤。第一个目标,代码能够编译通过基本上是不会有什么问题的。只要把握好二个修改代码的基本原则,第一。引入新的代码,而不修改原有的代码。在没有办法进行调试前修改源代码是不允许的,修改的不好就会引起最后代码运行逻辑的混乱,而且在代码能够运行之前是很难发现问题的。所以除非非常有把握,否则不要修改被移植工程的源代码。第二,引入新的代码之后,不能因为这次引入而需要再次引入新的代码。这样子,就进入死循环了。为了解决某个数据类型的定义,而引入了新的不能解释的数据类型。这样还不如不引入新的代码。所以引入新的代码,特别是很多头文件。引入之前一定要做修改,只保留工程本身需要的部分,去除那些不需要的代码。直到能编译通过为止。 三:第二个目标,使得代码能够链接过(Link)

      完成了第一个目标之后,就会有大量的link错误。原因是前面引入了很多外部函数,外部全局常量只有定义而没有实体,于是就会产生link错误。现在需要的是为代码提供引入的函数实体,外部全局变量实体。一般都是函数link(本文于2003年完成. 如需要转载 请联系jackforce at 163.com)不到的比较多。

      要解决link错误就需要了解不同平台上面函数操作的区别,特别是某些概念的区别。这里最好的参考资料有两个。一个是Windows Services for UNIX (SFU)的帮助文件,一个是MSDN中的一篇文章《UNIX Application Migration Guide》。SFU是微软提供一个Unix兼容环境,有点像Cygwin。在安装上SFU之后有一个帮助文件。其中有一部分就是Unix,Linux函数的说明,有些函数提供了信息说明可以用Windows Library中那些函数来替代。这点对于移植是很重要的(省事)。UNIX Application Migration Guide应该不算文章而是有点像书了。它说明了很多windows和Unix系统(类Unix系统)中很多概念不同之处,针对这些不同的概念提供了很多相关的信息来说明如何进行模拟这些不同之处。比如Unix系统中Signals概念可以使用Windows环境中的Event来替代。SIGALRM用Windows Message来替代等。

      SFU的帮助文件提供了一部分信息来说明Windows平台中哪些低阶函数(C 函数库)可以替代相关Unix函数。《UNIX Application Migration Guide》则提供了一种方法来转换Unix平台上的一些OS级的概念到windows上。实际上Cygwin下面也做了很多这样的转换。具体解决link问题的时候可以参考Cygwin本身的实现。

      不过有些概念,比如安全权限方面的概念。在Linux平台和windows平台上面是完全不能互换的。而且windows平台中的权限函数操作(本文于2003年完成. 如需要转载 请联系jackforce@163.com)的过于复杂。这样对于某些linux函数。比如getuid处理可以参考Cygwin的处理办法。什么也不做直接返回0 (return 0)。当代码中遇到这些函数的时候可以从Cygwin的代码中复制一个getuid出来。放入工程中去。
    利用这些资料,并通过相关的工具比如sourceinsight来搜索Cygwin本身的源代码,Link问题并不难处理。只是有可能在处理link问题的过程中会回复到上面的问题,编译不过。这个时候的代码修改还是一定要注意不要引入太多的新的代码,免得问题越来越复杂。

    四:代码运行正常

      实际上当link问题解决之后,程序可以在windows环境中运行时,一切就尽在掌握了。如果不考虑做多平台的程序的话,这个时候就可以任意去修改程序了。不过在代码调试过程可能需要一个参照,看看正常的程序运行流程是怎么样的。刚刚移植过来的程序在很多地方并不能马上就能正常的运行。回到Cygwin中,重新编译一个可以调试的版本(在GCC编译选项加上-g3),在需要的时候可以在Cygwin中调试程序。调试可以用GDB或者Insight。如果习惯Windows 平台下面编程,可以使用Insight,这是一个TCL/TK脚本程序,它提供了一个Windows界面以方便用户调试程序,不过Insight最终还是调用GDB。在这里具体调试就不细说明了。

      五:多平台代码

      移植后的代码(本文于2003年完成. 如需要转载 请联系jackforce@163.com)如果需要在多个平台上面运行,就要在lib目录里面大做文章了。提供自己的函数库,并根据各个平台进行调整。Tar的代码由Config.h和一些编译选项来控制如何在各个不同的平台上面做编译。Lib则提供了很多C Library函数或者不同平台下面的其他函数的替代版本。这样Tar在编译过程中就不会因为某些平台下某些函数的缺失而编译不过。多平台支持,一般都是在代码中加上很多编译开关,在编译期间去分隔Linux,Windows或者其他平台下面的特殊代码。比如utime.h头文件的包含问题。因为文件在Linux(gcc)下面和Windows(cl)下所处的C Library目录不同。包含的处理办法就不一样。可能需要这样写才能完全正确的包含。

    #if HAVE_UTIME_H &#61663;---- 如果有utime.h 文件
    # ifdef WIN32 &#61663;-----如果是win32环境
    # include <sys/utime.h> &#61663;-----包含sys/utime.h
    # endif
    # ifdef LINUX &#61663;---- 如果是Linux环境
    # include <utime.h> &#61663;---- 包含utime.h
    # endif
    #else &#61663;--- 如果没有utime.h定义出需要的结构
    struct utimbuf
    {
    long actime;
    long modtime;
    };
    #endif

      在其他的代码中基本上也是这样的处理。根据编译环境的不同来编译不同的代码。 这样的define的区隔,主要就是为了区隔不同平台的不同细微区别。有的区别也许是某些常量没有定义,有些区别是某些函数不存在。如果代码中调用函数在某些平台下面不存在,就需要提供一个lib去提供这些函数。Tar的Lib的作用也是如此。

      基本上代码的移植是前难后易。前期首先要保证源代码本身的逻辑不能变动,所以在修改代码方面只能尽量修改外围的代码,而不是修改源代码本身。如果link过了之后,则就是一般的Windows下面的编程了,可以根据需求任意修改移植后的代码了。最难的地方可能就是OS级不同概念的替换了。C Library虽然在各个平台上有不同之处,但是总是比较接近,不同的地方可以提供自己编写的代码来替换。但是OS级的概念,和平台相关性太大,一般不太容易替换。

      六:扩展问题,待解决的问题

      如果需要把移植过来的代码改成DLL或者lib给其他的工程调用。比如给其他的工程提供一个解包Tar文件的功能。如果不加修改,那么移植过来的代码有很多缺陷。

      首先是多线程支持问题。如果代码中有很多全局变量,那么改成DLL或者lib之后就不能在多线程下面调用。

      其次,DLL接口表。移植后的代码入口是main函数,虽然整个工程里面有很多独立功能,但是这些独立功能的调用都是通过使用不同的参数来实现。如何输出接口表给其他工程使用,需要做些功夫。

      三、控制 原始的控制台程序在下了运行参数之后,一般都是一头运行到底的,也有可能在中间有些要求输入某些信息的。这样的程序如何集成到其他的工程中并受到其他工程的控制?比如遇到某些错误要返回等等。在Tar代码中遇到错误就直接退出程序。显然这些地方就不合DLL设计要求。可能需要重新设计代码的结构。

      四,输出信息。Tar工程里面很多向控制台输出的信息。这些信息输出需要重新定向或者屏蔽。

      第三第四部分可以参考Linux下面的FrontEnd程序,即只是为某个特殊的程序提供的一个GUI界面的程序。FrontEnd程序就是控制了主程序的运行并重新定向输出信息到GUI界面上。

      注1. Cygwin,是Windows平台下面的一个Linux模拟环境。可以从www.Cygwin.com上下载全部内容。

      注2. Windows Services for UNIX (SFU)的SDK可以从微软网站上获得 http://www.microsoft.com/windows/sfu/

      注3. UNIX Application Migration Guide 可以从MSDN中取得,如果没有MSDN可以从微软MSDN网站上取得。 http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dnucmg/html/ucmglp.asp

      注4. Tar, Cygwin下面有Tar。但是只能在Cygwin下面运行 或者必须提供Cygwin的平台DLL才能在windows下面单独使用Tar程序。
    注5. CL是微软的C/C++编译器,包含在Visual Studio各个版本中

      本文于2003年完成. 如需要转载 请联系jackforce@163.com,如果有看到部分干扰信息.请原谅.主要避免转载过程中作者信息丢失用.不得以为之,请各位原谅.

      PS :

      用一个例子简单说明了从linux平台移植到windows平台上的一些需要注意的问题和解决方法.

      例子仅用来说明移植过程产生的问题用.

    展开全文
  • 在windows平台上的本地移植blobfs, blobfs可以帮助您挂载Azure Blob存储作为本地磁盘驱动程序,无论它是Linux系统还是windows系统。- weswu8 / blobfs-win-源码
  • mantis系统windows移植到Linux平台

    千次阅读 2010-07-16 16:27:00
    1.1 系统windows平台转换到linux平台 1.1.1 备份mysql数据库 #####################打开DOS窗口########################## 【开始】-【运行】-【cmd】 #####################在mysql bin文件夹...
  • 我从一年前(大概2013年6,7月份)开始在业余时间做这项移植工作,走走停停,陆续用了一两个月的时间,才基本完成。这期间做了详细的移植记录,现在发布出来,希望对某些人有用。就在昨天(2014年7月12日),我又把...
  • 亦步亦趋的代码移植——从Linux到Windows的代码移植.pdf
  • Xshell连接windows系统

    万次阅读 2018-11-12 18:45:22
    目的是Jenkins连接windows系统服务器,我使用Xshell连接windows系统试试先 1,下载OpenSSH 下载地址:https://github.com/PowerShell/Win32-OpenSSH/releases 选择适合你电脑的zip,我下载的是OpenSSH-Win64.zip ...
  • 如何移植openwrt系统

    千次阅读 2016-01-14 10:13:24
    Windows 下面 telnet 和 SSH 登录可以使用 Putty ,在 Linux 或 Mac 下可分别使用如下命令:   ssh –l root 192 . 168 . 1 . 1 //Linux ssh root @ 192 . 168 . 1 . 1 //Mac ...
  • 系统移植软件

    2012-01-12 12:45:56
    XXCLONE是个免费的系统移植软件,使用起来非常简单。只要先把新硬盘装上计算机,用Windows提供的磁盘管理工具做好分区,然后启动XXCLONE...要搬移前一定要确认分区的磁盘代号是无误的,这样就能轻松搬移Windows系统了。
  • Windows至Linux移植技术的研究及移植工具的设计.pdf
  • linux系统移植步骤

    万次阅读 多人点赞 2018-07-13 22:52:08
    性能优良、源码开放的Linux具有体积小、内核可裁减、网络功能完善、可移植性强等诸多优点,非常适合作为嵌入式操作系统。一个最基本的Linux操作系统应该包括:引导程序、内核与根文件系统三部分。 嵌入式Linux系统...
  • windows 系统框架 总结

    千次阅读 2015-07-02 14:53:44
    windows系统是一个完美美的操作系统,它具有可扩展性、可移植性、稳定性、健壮性、兼容性、可伸缩性,性能优越,其实现过程非常复杂,其主要的思想是系统分层,每个层都有自己的责任和义务,它隐藏细节实现,提供...
  • 目前常见的三大操作系统:Windows系统、Linux系统 和 Mac OS操作系统。 首先,不管是Windows操作系统、Linux系统还是苹果的Mac OS操作系统,甚至包括操作系统的鼻祖UNIX操作系统,最早都是用C语言编写的。 UNIX ...
  • 概要:假设你有一些在Windows环境编写的代码,你想让它们在Linux环境下运行。代码的移植是一个很头疼的问题,本文介绍几个简单的方法,使你顺利...  2、Windows和Linux系统关于itoa的移植问题  大家知道,在将Wind

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 134,128
精华内容 53,651
关键字:

如何移植windows系统