问题标签 [incremental-linking]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
4531 浏览

visual-c++ - 同类目标目录

如果启用了增量链接,Visual C++ 会在 $(TargetDir) 中生成 *.ilk 文件,我可以覆盖此行为并将其重定向到另一个目录吗?(不使用构建后步骤)

0 投票
6 回答
2155 浏览

c++ - Visual C++ 中的部分生成与完整生成

对于我使用 Visual C++ 进行的大部分开发工作,我使用的是部分构建,例如按 F7 并仅重新构建更改的 C++ 文件和它们的依赖关系,然后是增量链接。在将版本传递给测试之前,我会采取预防措施进行完全重建,这在我当前的项目中大约需要 45 分钟。我看到很多帖子和文章都在提倡这一行动,但想知道这是否必要,如果有,为什么?它是否会影响交付的 EXE 或相关的 PDB(我们也在测试中使用)?从测试的角度来看,该软件的功能会有所不同吗?

对于发布版本,我使用的是 VS2005、增量编译和链接、预编译头文件。

0 投票
1 回答
1082 浏览

windows - 我如何知道可执行文件是否被增量链接?

我正在尝试使用 Purify 6 来分析我们使用 VC++ 2003 (7.1) 构建的一个可执行文件中的内存损坏。

当我使用以下命令检测二进制文件时:

仪器中止告诉我可执行文件是增量链接的。困惑的是,我检查了构建选项,但/INCREMENTAL:NO在那里。可以肯定的是,我重建了它,并且该选项在链接时正确传递。

有没有办法知道可执行文件是否被增量链接?

我看了看内容dumpbin /HEADERS,但没有看到任何相关内容。

谢谢。

0 投票
6 回答
23612 浏览

c++ - C++: LINK : debug\XXXXX.exe not found 或不是由最后一个增量链接构建的;执行完整链接

使用 Visual Studio 2008 SP1,
这一行:

每次编译项目时都会出现,无论我做了多么小的更改。
这可能是什么原因?

0 投票
2 回答
44435 浏览

incremental-linking - 什么是“增量链接”?

我查看了 Microsoft 的 MSDN 和整个网络,但我仍然无法真正了解它是什么。

这是否意味着已完成的程序在其执行期间的不同时间加载 DLL,就像在启动时同时加载一样?

我完全走投无路了吗?:)

0 投票
2 回答
7267 浏览

linux - 在 Linux 上使用 gcc 进行增量链接。是否可以?

我团队项目的开发方式是,我们从所有.o对象文件中为我们的应用程序生成一个共享对象库。我的任务(希望它足够具体,但也足够通用以对其他人有用!)是仅链接自上次创建可执行文件以来已更改的目标文件。例如,这是我用来构建 .so 的命令行:

哪个按预期工作!:) 我的目标是从现在开始只能链接更改的目标文件,以加快并发链接过程。一个示例命令是:

这将libMySharedLibrary.so使用较新的目标文件进行更新,同时还保留较旧的目标文件libMySharedLibrary.so。实际上,当我libMySharedLibrary.so使用上面的命令生成时,文件大小比包含所有目标文件时的文件大小要小得多,所以我几乎可以肯定上面的命令没有做我想要的。

通过我的研究,我发现-i链接器有一个选项与-r选项相同,它似乎也只是将所有目标文件组合成一个大目标文件。不幸的是,这似乎不是我想要的。

简而言之,我只想在初始链接之后链接更改的目标文件,从而为将来的链接提供更快的链接过程。有没有办法做到这一点?

编辑:我尝试过的一个例子-i/-r

示例命令:g++34 -Wl,-r -nostdlib -rdynamic -m64 -Wl,-rpath,'$ORIGIN' MyObject1.o MyObject2.o MyObject3.o MyObject4.o -o AllMyObjects.o

我必须添加-nostdlib标签以阻止它对我大喊大叫需要它,并删除,-shared因为标签不允许共享对象-r

这个命令似乎将我所有的 .o 文件都塞进一个大的 .o 文件中。因此,如果我可以从现在开始仅使用已更改的 .o 文件更新该 .o 文件,那就太好了。在最初创建 AllMyObjects.o 之后,我尝试了这个命令:g++34 -Wl,-r -nostdlib -rdynamic -m64 -Wl,-rpath,'$ORIGIN' MyObject1.o MyObject3.o -o AllMyObjects.o,但它也会创建一个更小的 (file-size-wise) AllMyObjects.o,所以我假设它不可能拥有所有的目标文件。我觉得这是我可能会犯一个小错误的事情。有人有什么建议吗?提前致谢。

0 投票
1 回答
592 浏览

eclipse-plugin - 使用 Eclipse 构建 DSL 时,增量编译的最佳方法是什么?

正如 Eclipse 文档所建议的那样,我有一个org.eclipse.core.resources.IncrementalProjectBuilder可以编译每个源文件的文件,并且我也有一个org.eclipse.ui.editors.text.TextEditor可以单独编辑每个源文件的文件。每个源文件都被编译到自己的编译单元中,但它可以引用其他(已经编译的)源文件的类型。

两个重要的任务是:

  1. 编译(以确保我们使用的类型确实存在)
  2. 自动完成(查找类型,以便我们查看其上存在哪些属性/方法)

为此,我想将所有已编译类型的表示形式存储在内存中(以下称为我的“类型存储”)。

我的问题有两个:

  1. 上面的任务一由构建器执行,任务二由编辑器执行。为了让他们都可以访问这种类型的商店,我应该在他们都可以访问的地方创建一个静态商店,还是 Eclipse 提供了一种更简洁的方法来处理这个问题?请注意,在需要时实例化构建器和编辑器的是 eclipse,而不是我。

  2. 打开 Eclipse 时,我不想重建整个项目,这样我就可以重新填充我的类型存储。到目前为止,我最好的解决方案是将这些数据保存在某个地方,然后从中重新填充我的商店(也许在项目打开时)。这是其他增量编译器通常这样做的方式吗?我相信 Java 的方法是使用一种特殊的解析器,可以有效地从类文件中提取这些数据。

任何见解将不胜感激。这是我的第一个 DSL。

0 投票
3 回答
2879 浏览

c++ - Visual Studio C++ 中增量链接的性能低下

我有一个由许多静态库和独立 cpp 文件构建的大型二进制文件。它被配置为使用增量链接,所有优化都被禁用/Od- 它是调试版本。

我注意到,如果我更改任何独立的 cpp 文件,那么增量链接运行速度很快 - 1 分钟。但是,如果我更改任何静态库中的任何 cpp,那么它会运行很长时间 - 10 分钟,与普通链接相同。在这种情况下,我没有从增量链接中获得任何好处。有没有可能加快速度?我用的是VS2005。

0 投票
1 回答
1555 浏览

qt - 如何让 QtCreator 与 nmake 增量链接?

我曾经在 Visual Studio (2008) 中进行开发,但现在几乎完全转向使用 QtCreator 进行开发,主要是由于代码导航、重构和代码完成。我正在使用win32-msvc2008mkspec。到目前为止,我已经设法设置了所有东西,除了一件事:

增量链接。

在我的项目文件中,我添加了以下行:

我得到一个链接器行

但是,它总是告诉我它找不到 .exe 或者它不是由上次增量构建完全构建的,即使我只更改了一个 .cpp 文件,恢复更改并保存。

我尝试过使用和不使用阴影构建,以及使用 nmake 或 jom 进行构建,这两种组合都不起作用。

有没有人设法让 QtCreator 与 nmake 逐步链接?

PS:如果我使用 Qt 插件将项目文件导入 Visual Studio,增量链接将完美运行。

0 投票
1 回答
4658 浏览

visual-studio-2008 - Visual Studio 2008 中的 LNK1210

链接 Chromium 项目时收到以下错误:

VS2005也有类似的问题。不知何故,这很奇怪,因为链接器已经在做完整的链接。设置/INCREMENTAL:NO时链接成功,但增量链接被禁用。

有没有办法可以增加 ILK 大小限制以启用增量链接?