4

首先我想说我是计算生物物理学家,而不是软件工程师,所以我的编程知识仅限于科学计算(我使用 C++、Matlab 和 R)。

我最近被要求将一个巨大的代码包(约 10,000 行)从 MS Visual C++ 移植到 Linux,我一直在那里开发一些代码。他们知道我正在使用 Linux 编写代码,直到将近一年后才告诉我他们希望它与 Windows 中的旧代码集成。

老实说,我不知道从哪里开始。我能够组合一个 MakeFile 并成功编译,但我遇到了分段错误,经过 valgrind 的调查,这可能与数百个管理不善的内存分配有关。有没有一个适合我开始的好地方,不需要我学习 MS Visual C++ 就可以让它在 Linux 中工作?任何帮助将不胜感激。谢谢!

编辑:感谢到目前为止的所有帮助。我绝对是“真正”编程的新手,所以我什至不总是清楚我应该如何描述我的问题。感谢您的理解并提供了一些良好的起点。

4

2 回答 2

9

我将首先打开编译器警告并修复所有警告。

-Wall -Wextra -Wstrict-aliasing -pedantic -Werror -Wunreachable-code

如果您修复所有警告,它将解决许多您可能从未见过的问题。尤其是在不同编译器之间移植时(因为这些代表会影响移植的问题,因为不同的编译器可以做不同的事情)。

在 MS 编译器上时。将警告级别提高到 4,并告诉编译器将所有警告视为错误。这些结合起来会产生很多错误。

于 2013-04-17T19:50:04.463 回答
3

有了这个代码库大小,如果你从修复你已经注意到的随机内存管理问题开始,你很快就会有一个工作的应用程序。这假设您正在正确诊断每个段错误,这从问题中不是很明显。了解新代码究竟做了什么以及如何与调试过程齐头并进的过程。

如果它已经在 Linux 中编译,您不需要了解任何其他操作系统,假设您在尝试使其工作时没有“注释掉”任何您不理解的代码,或者避免引用 Windows 特定库这可能在应用程序中发挥了作用。

于 2013-04-17T19:39:45.973 回答