今天给各位分享如何移植linux软件的知识,其中也会对linux软件移植到安卓进行解释,如果能碰巧解决你现在面临的问题,别忘了关注本站,现在开始吧!
本文目录一览:
- 1、如何把linux下的软件移植到ubuntu系统下
- 2、linux下的应用程序移植到android系统,求思路!
- 3、开发中,在linux下的游戏软件 移植到windows需要做哪些处理 求详细
- 4、利用MinGW如何实现linux软件移植至windows
1、如何把linux下的软件移植到ubuntu系统下
虽然说 Linux 系统的最大优点就是兼容性好,但是有时候不同版本的 Linux 还是会有一些差别的。如果说你想把别的Linux系统版本下的软件移植到 Ubuntu 系统下面的话,那么最好还是对源程序做一些可扩展代码的改进(例如:如果是使用 C 语言开发的软件,你就可以在 C 语言源程序中增加一些条件编译选项,具体的条件编译选项有很多,你需要仔细斟酌),这样你把 C 语言源程序复制到 Ubuntu 系统下面,然后可以使用不同的选项对 C 语言源程序进行编译,这样编译出来的可执行程序,就可以在 Ubuntu 系统下执行了。
2、linux下的应用程序移植到android系统,求思路!
如果是JAVA之类的代码,可能移植难度要低些。移植程序是个苦活,与其没完没了的调试,还不如按照原来的设计思路和功能重新写代码呢。
3、开发中,在linux下的游戏软件 移植到windows需要做哪些处理 求详细
Tar是Linux平台下面一个打包工具。移植这样一个程序到windows平台需要做那些工作呢?
首先是一些准备工作,在Windows平台上面安装上Cygwin的最新版本,在Cygwin中安装好GCC等开发工具。 同样也需要一个Windows开发环境。可以使用最新版本Visual Studio, Microsoft Visual Studio .NET 2003。从上取得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没有定义的问题就解决了。其他的数据类型也是同样对待处理。
4、利用MinGW如何实现linux软件移植至windows
实际上 MinGW 并不是一个 C/C++ 编译器,而是一套 GNU 工具集合。除开 GCC (GNU 编译器集合) 以外,MinGW 还包含有一些其他的 GNU 程序开发工具 (比如 gawk bison 等等)。
开发 MinGW 是为了那些不喜欢工作在 Linux(FreeBSD) 操作系统而留在 Windows 的人(比如我)提供一套符合 GNU 的 GNU 工作环境。
(此前的 cygwin 虽然也是 GNU 的 Windows 移植,但是 cygwin 是有版权的,而不是 GNU。)
所以,使用 MinGW 我们就可以像在 Linux 下一样使用 GNU 程序开发工具。
GCC 就是 MinGW 的核心所在,GCC 是一套支持众多计算机程序语言的编译系统,而且在语言标准的实现上是最接近于标准的。并且 GCC 几乎可以移植到目前所有可用的计算机平台。(我的电脑上就还装有 DevKitPro,里面包含 GCC 的 ARM(for GBA/DS/GP32) 和 MIPS(for PSP) 版本。)
GCC 本身不像 VC 那样拥有 IDE 界面(在 Windows 上也存在 Dev C++ 之类的支持 MinGW 编译器的 IDE)。源代码编辑你可以选用任何你喜欢的文本编辑器(据说微软的开发人员包括 VC 的开发都不用 VC 所带的 IDE 编辑器,而是选用 GNU 的 VIM 编辑器)。然后使用 make 等工具来进行软件项目的编译、链接、打包乃至发布。而像 cvs(svn) 源代码版本控制工具可以让世界上任何一个角落的人都可以参与到软件项目中来。
关于 MFC,微软基础库类,这个随 VC++ 携带的一个源代码公开的开发包,和其他 Windows 程序开发包是一样的。如果有 VC++ 的授权,你完全可以使用 MFC 的源代码,也就是你使用 GCC 来编译 MFC 程序是完全可以的。
当然,GNU 下也很多 Windows 程序开发包,甚至有一些是支持跨平台使用的。不仅仅可以直接把源代码编译为 Windows 程序,也可以不经修改编译为其他操作系统的图形程序。
不过 GNU 下,最流行的图形界面开发库是 GTK+。GTK+ 也能很好的运行在 Windows 平台(比如 GIMP 和 Gaim)。
总体说来,使用 MinGW 就是 GNU。
如何移植linux软件的介绍就聊到这里吧,感谢你花时间阅读本站内容,更多关于linux软件移植到安卓、如何移植linux软件的信息别忘了在本站进行查找喔。