将 Linux 兼容项目从 Windows 移植到 Linux [关闭]
Posted
技术标签:
【中文标题】将 Linux 兼容项目从 Windows 移植到 Linux [关闭]【英文标题】:Porting Linux compatible project from Windows to Linux [closed] 【发布时间】:2016-06-02 00:42:08 【问题描述】:在我工作的公司中,我们在 Windows、Visual Studio 上进行开发,并使用 Eclipse 为 Linux 进行交叉编译。我们的最终应用程序在 Linux 上运行。我试图说服他们在 Linux 上构建所有东西是多么容易和快速,而不是使用旧的交叉编译器和各种奇怪的错误。当我在 Linux 上使用更高版本的 gcc 编译它们时,一些错误就消失了。此外,由于交叉编译器很旧,我们无法使用 C++11 功能。
我遇到的一个主要问题是,由于我们的项目是在 Windows 上开发的,因此我很难格式化标题!例如,假设我有一个名为 io
的文件夹,其中有一个头文件 Demo.h
。那么这个
#include <IO\demo.h>
在 Windows 上运行良好。但在 Linux 上则不然,因为 Windows 不区分大小写,而且 \
和 /
都可以在 Windows 上运行。在 Linux 上它必须是这样的
#include <io/Demo.h>
否则我会得到一个错误,它找不到指定的头文件。我们正在处理 20 多个主要项目,每个项目大约 3-4 GB。我已经修改了其中一个。我花了大约 7 个小时才完成。
有什么工具可以帮助我更快地完成这个过渡吗?
我们的源代码 95% 是 C++,其余的是 C。
【问题讨论】:
是的,有一个工具可以做到这一点。它被称为perl
。编写一个简单的 perl 脚本来遍历整个文件层次结构并修复 #include
路径名应该不会超过半小时左右。
【参考方案1】:
官方标准是使用/
作为文件路径分隔符,配合c-preprocessor解析#include
语句中的路径。
\
的用法似乎是一个 MSVC 扩展。
官方工具是sed
和awk
来解决linux 下大型代码库的此类问题。
修复区分大小写有点困难,但可以使用一些技巧与来自find
的匹配结果...
【讨论】:
以上是关于将 Linux 兼容项目从 Windows 移植到 Linux [关闭]的主要内容,如果未能解决你的问题,请参考以下文章
将数据序列化代码从 C++ linux/mac 移植到 C++ windows
在windows 下编写的c语言软件可以任意移植到其他系统(例如:linux操作系统)中运行么