问题标签 [compilation]

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 投票
11 回答
38135 浏览

c++ - 用于 linux 的最小 c++ make 文件

我正在寻找一个简单的推荐用于 linux 的“最小”c++ makefile,它将使用 g++ 编译和链接单个文件和 h 文件。理想情况下,make 文件中甚至没有物理文件名,只有 .cpp 到 .o 的转换。生成这样一个 makefile 而不深入到 autoconf 的恐怖中的最佳方法是什么?

当前目录包含,例如

t.cpp th

我想要一个生成文件来创建它。我尝试了 autoconf,但它假设 .h 是 gcc 而不是 g++。是的,虽然不是初学者,但我正在从几年前重新学习项目操作的最佳方法,因此正在寻找自动化的方法来为小型项目创建和维护 makefile。

0 投票
4 回答
3635 浏览

python - cygwin下如何编译wxPython?

我正在使用 CYGWIN 作为平台并想使用 wxPython。有没有办法让源代码在 cygwin 中编译和工作?

0 投票
2 回答
1675 浏览

optimization - 任何用于零件优化的宏或技术?

我正在使用 g++ 编译器研究无锁结构。似乎使用 -o1 开关,g++ 会改变我的代码的执行顺序。如何禁止 g++ 对代码的某些部分进行优化,同时保持对其他部分的优化?我知道我可以将它拆分为两个文件并将它们链接起来,但它看起来很难看。

0 投票
15 回答
144142 浏览

c++ - 为什么 C++ 编译需要这么长时间?

与 C# 和 Java 相比,编译 C++ 文件需要很长时间。编译 C++ 文件比运行正常大小的 Python 脚本花费的时间要长得多。我目前正在使用 VC++,但任何编译器都一样。为什么是这样?

我能想到的两个原因是加载头文件和运行预处理器,但这似乎不能解释为什么需要这么长时间。

0 投票
3 回答
1662 浏览

perl - 为什么这个 Perl BEGIN 块在调试器中的行为不同?

我有一些在调试器之外运行良好的 Perl 代码:

但是当我在调试器中运行它时:

它的行为不同。

有问题的文件(有几个)是大型 Perl 模块(约 20K 行代码)的测试套件的一部分。测试在编译时做了很多设置工作并使用 BEGIN 块。这是一些最小的复制代码:

如果你把它放进去somefile.pl并运行它,它会按预期打印“OK”。如果您在调试器中使用 运行它perl -d somefile.pl,它会因以下错误而死:

结果是$@当代码在调试器下运行时它不是对象。相反,它是一个包含此字符串的无福标量:

(保留内部换行符和间距。这是文字,甚至是“...”。)

我需要这样的代码才能在调试器中运行。在测试套件中使用调试器是我工作流程的重要组成部分。该模块使用异常对象并在编译时做了很多事情,并期望抛出的对象在被捕获时成为对象。

我的问题(最后)是这样的:我怎样才能让它工作?有解决方法吗?这是 perl 调试器模块中的错误吗?解决此问题的最佳方法是什么?(我知道这是几个问题,但它们都是相关的。)

我在 Mac OS X 10.5.5 上使用 perl 5.10.0。


Adam Bellaire 建议的 dieLevel 看起来很有希望,而且确实有些东西(无法找出是什么)对我来说将它设置为 1。但是我使用~/.perldb文件将其设置为 0 并且问题仍然存在。事实上,我将所有三个相关设置都设置为 0。我的~/.perldb文件:

o我通过在调试器中运行命令确认设置生效。当我运行perl -de 0时以及运行实际somefile.pl文件时,我看到它们都设置为 0。


谢谢,布赖恩。我曾经perlbug提交过一个错误 ( RT 60890 ),并且我已经开始local $SIG{'__DIE__'}在我的代码中的所有适当位置进行添加。(我还在错误中注意到perldoc perldebug似乎仍然暗示默认dieLevel值为 0。)

0 投票
1 回答
7798 浏览

visual-studio - 解决方案中的 Visual Studio 项目引用

在解决方案中引用项目的最佳方法是什么。

我通过 Add Reference --> Projects 添加了引用。但是,它链接到发布 DLL 或调试 dll。

我想在引用中有项目本身,当我们编译项目时,必须编译所有引用项目(通过依赖项)。

这个怎么做?

0 投票
1 回答
169 浏览

resources - 关于编译中链接过程的好资源

我一直在写代码,我一直认为编译的链接阶段非常简单,但是最近我不得不在应用程序中添加一个插件系统,并且我遇到了很多编译和运行时问题,由于我对这件事完全缺乏了解。我现在已经让它工作得很好,并且在这个过程中学到了很多东西,但是现在我意识到我在这个主题上还有很多东西要学,我想更多地探索这个主题。所以我想知道是否有人对整个“代码部分、符号、链接、动态/静态库......”业务的文章、博客文章或书籍有很好的指导。

我正在使用 gcc 和 ld 在 Linux 上进行开发,但我也对 M$ 的做事方式感兴趣,我渴望知识:)

谢谢!

0 投票
2 回答
2190 浏览

static - 是否可以在 Windows 上使用 Mono 静态编译?

我想知道是否可以在 Windows 上使用 Mono 静态编译。如果是这样,我该怎么办?

0 投票
18 回答
21023 浏览

caching - 用于编译的 RAM 驱动器 - 有这样的事情吗?

Stack Overflow 上的一个问题的答案 (见下文)让我想到了一个很棒的小软件,它对世界各地的编码人员来说都是无价的。

我在想象 RAM 驱动器软件,但有一个关键的区别 - 它会镜像我硬盘驱动器上的真实文件夹。更具体地说 - 包含我当前正在处理的项目的文件夹。这样,任何构建几乎都是瞬时的(或者至少快几个数量级)。RAM 驱动器将仅使用空闲资源在后台将其内容与硬盘驱动器同步。

快速的谷歌搜索什么也没发现,但也许我只是不知道如何谷歌。也许有人知道这样的软件?最好是免费的,但合理的费用也可以。

补充:已经提出了一些我一开始就放弃的解决方案。它们将是(无特定顺序):

  • 购买更快的硬盘驱动器(可能是SSD或 10K RPM)。我不想要硬件解决方案。不仅软件有可能变得更便宜(免费软件,有人吗?),而且它还可以用于硬件修改即使不是不可能的情况下也不受欢迎的环境 - 例如,在办公室。
  • 让 OS/HDD 进行缓存 - 它更清楚如何使用您的空闲 RAM。OS/HDD 具有通用缓存算法,可以缓存所有内容并尝试预测未来最需要哪些数据。他们不知道对我来说优先级是我的项目文件夹。众所周知,它们并没有真正缓存它。;)
  • 周围有很多 RAM 驱动器;使用其中之一。对不起,那将是鲁莽的。只要有一点空闲时间,我就需要将我的数据同步回 HDD。在电源故障的情况下,我可以忍受失去最后五分钟的工作,但不是自上次签到以来的所有工作。

补充 2:一个想法出现了 - 使用普通的 RAM 驱动器加上一个后台文件夹同步器(但我的意思是background)。有没有这样的事情?

补充3:有趣。我刚刚在工作中试用了一个简单的 RAM 驱动器。重建时间从 ~14 秒下降到 ~7 秒(还不错),但增量构建仍然在 ~5 秒 - 就像在 HDD 上一样。任何想法为什么?它使用aspnet_compileraspnet_merge。也许他们对其他地方的其他临时文件做了一些事情?

添加了 4:哦,不错的新答案集!:) 好的,我为所有反对者提供了更多信息。:)

产生这个想法的主要原因之一不是上述软件(构建时间为 14 秒),而是我当时无法访问的另一个软件。这个另一个应用程序有一个 100 MB 的代码库,它的完整构建大约需要 5 分钟。啊,是的,它在Delphi 5中,所以编译器不是太先进。:) 将源放在 RAM 驱动器上会产生很大的不同。我想不到一分钟就知道了。我没有量过。因此,对于所有那些说操作系统可以更好地缓存内容的人——我不敢苟同。

相关问题:

用于加速 IDE 的 RAM 磁盘

第一个链接的注意事项: 它链接的问题已被删除,因为它是重复的。它问:

编译代码时你在做什么?

我链接到的Dmitri Nesteruk的答案是:

我几乎立即编译。部分原因是我的项目很小,部分原因是使用了 RAM 磁盘。

0 投票
12 回答
23498 浏览

c++ - 您如何减少 Visual C++ 项目(原生 C++)的编译时间和链接时间?

您如何减少 VC++ 项目(原生 C++)的编译时间和链接时间?

请指定每个建议是否适用于调试、发布或两者。