将MS Visual C++移植到Linux G++。

4
我想先说明一下,我是一位计算生物物理学家,而非软件工程师,所以我对编程的了解仅限于科学计算(我使用C++、Matlab和R)。
最近有人让我从MS Visual C++将一个庞大的代码包(约10,000行)移植到Linux上,因为我一直在Linux上开发一些代码,他们知道了这一点,但直到近一年后才告诉我他们想把它与旧的Windows代码集成起来。
说实话,我不知道该从哪里开始。我能够组合出一个MakeFile并成功编译,但我遇到了段错误,经过valgrind的调查,可能与数百个未经管控的内存赋值有关。有没有一个好的起点,不需要我为了使其在Linux上运行而学习MS Visual C ++呢?任何帮助都将不胜感激。谢谢!
编辑:感谢所有提供帮助的人。我肯定是一名新手,“真正”的编程对我来说并不总是很清楚,感谢你们的理解和提供一些好的起点。

3
Visual Basic不是C++,它是一种完全不同的语言。从你的问题中我推断出你只是把名字搞混了,实际上你正在尝试将代码从MS Visual C++移植到Linux,请编辑你的问题以澄清。 - syam
@user93353:实际上他正在尝试相反的移植(从Windows到Linux)。从Linux到Windows可能确实很简单(最坏情况下只需通过Cygwin),但是从Windows到Linux则完全不同。 - syam
2
"最近有人要求我从MS Visual C++移植到Linux", "我对Windows编程一无所知,只是被告知要在Linux上使其正常工作", "他们知道我正在Linux上编写,并在将近一年后才告诉我他们希望将其与旧的Windows代码集成", "难道不需要我学习MS Visual C++就能让它在Linux上运行吗?"……我的意思是以最友好的方式说,你考虑过今天休息一下,明天重新开始吗?" - Marsh Ray
1
他们是谁 - 政府? - user93353
2
谢谢,这正是我在寻找的类型。对于我来说,1万行代码太多了,我的大多数代码只有1-2千行,所以相比之下这是一个相当大的项目。 - Michael LeVine
显示剩余14条评论
2个回答

9
我建议先打开编译器警告,并修复所有警告。
-Wall -Wextra -Wstrict-aliasing -pedantic -Werror -Wunreachable-code

如果你修复所有的警告,它将解决许多你可能从未见过的问题。特别是在不同编译器之间移植时(因为这些问题会影响移植,不同的编译器可能有不同的操作)。在 MS 编译器上,将警告级别提高到 4,并告诉编译器将所有警告视为错误。这两个组合可以得到很多错误。

+1,非常好的建议。编译器是你的朋友,充分利用它吧。 :) - syam
1
+1. 这个想法是要通过所有可获得的渠道修复你注意到的所有烟雾。 - Jirka Hanika
同时使用另一个带有良好警告的编译器(clangicc)进行编译。 - pmr

3
基于这个代码库的规模,如果你先开始解决一些你已经注意到的随机内存管理问题,很快就可以得到一个可工作的应用程序。前提是你正确地诊断了每一个段错误,这在问题描述中不太明显。学习新代码的确切功能和调试过程将同时进行。
如果它已经在Linux上编译通过,假设你没有尝试将你不理解的代码注释掉或者避免使用可能会影响应用程序的Windows特定库,那么你不需要了解其他操作系统。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接