展开的命令行太长

expanded command line too long

本文关键字:命令行      更新时间:2023-10-16

在使用MSVC9时,我在链接阶段遇到了一个问题。上面写着:

NMAKE:致命错误U1095:扩展的命令行link.exe…太长

您可以让nmake将命令行参数写入文件,然后使用链接选项从文件中读取参数。

查找"内联文件",例如http://msdn.microsoft.com/en-us/library/z440c98k(v=vs.80).aspx

我已经很久没有这么做了,但据我回忆,用法是这样的:

foo.exe : foo1.obj foo2.obj foo3.obj
    link.exe @<<
foo1.obj
foo2.obj foo3.obj
... more arguments, macros etc on one or more lines
<<
    rem other commands go here if you want

本质上,您只需要一个普通的nmake命令行,但这对<<标记告诉nmake将选项写入文件(它们被该文件的名称替换),然后@告诉link从该文件读取参数。

KEEP选项(可能带有指定的文件名)对调试很有用-如果链接barfs,您可以查看文件中实际传递给它的内容。

对于工具中固定的命令行长度,您无能为力。您可能希望尝试将对象文件合并为几个库,然后执行最后的链接并将这些库链接在一起。这将在Makefile中引入另一个步骤,但会绕过命令行过长的错误。

哈哈,这很糟糕,但我们需要更多信息来回答您的问题。对于初学者来说,基本上是说调用链接器的命令行比cmd.exe本身允许的缓冲区大。如果我没有记错的话,可能有一种方法可以让命令shell在命令行上使用更大的缓冲区。或者,您可以将shell更改为windows powershell,看看这是否可行。