Visual studio Windows VS2005上的Firefox 3.6生成错误-C编译器无法创建可执行文件

Visual studio Windows VS2005上的Firefox 3.6生成错误-C编译器无法创建可执行文件,visual-studio,firefox,compiler-construction,makefile,mozilla,Visual Studio,Firefox,Compiler Construction,Makefile,Mozilla,我正在尝试在Windows上使用Visual Studio 2005构建Firefox 3.6 Beta 4。我下载了最新版本的mozilla build的发行版源代码,但出现错误“C编译器无法创建可执行文件”。我已经能够建立所有其他3.5和以前的版本没有任何问题 问题发生在构建过程的开始阶段,它正在测试是否能够编译和创建可执行文件 生成输出是 $ make -f client.mk build Adding client.mk options from /c/dev/ff3.6/mozilla

我正在尝试在Windows上使用Visual Studio 2005构建Firefox 3.6 Beta 4。我下载了最新版本的mozilla build的发行版源代码,但出现错误“C编译器无法创建可执行文件”。我已经能够建立所有其他3.5和以前的版本没有任何问题

问题发生在构建过程的开始阶段,它正在测试是否能够编译和创建可执行文件

生成输出是

$ make -f client.mk build
Adding client.mk options from /c/dev/ff3.6/mozilla-1.9.2/.mozconfig: 
MOZ_OBJDIR=$(TOPSRCDIR)/obj-firefox
MOZ_CO_PROJECT=browser
make[1]: Entering directory `/c/dev/ff3.6/mozilla-1.9.2'
cd /c/dev/ff3.6/mozilla-1.9.2/obj-firefox
/c/dev/ff3.6/mozilla-1.9.2/configure
Adding configure options from /c/dev/ff3.6/mozilla-1.9.2/.mozconfig:
--disable-tests
--with-windows-version=501
--enable-application=browser
--disable-vista-sdk-requirements
loading cache ./config.cache
checking host system type... i686-pc-mingw32
checking target system type... i686-pc-mingw32
checking build system type... i686-pc-mingw32
checking for gawk... gawk
checking for perl5... no
checking for perl... /bin/perl
checking for gcc... cl
checking whether the C compiler (cl ) works... no
configure: error: installation or configuration problem: C compiler cannot create executables.
*** Fix above errors and then restart with "make -f client.mk build"
make[1]: *** [configure] Error 1
make[1]: Leaving directory `/c/dev/ff3.6/mozilla-1.9.2'
make: *** [/c/dev/ff3.6/mozilla-1.9.2/obj-firefox/Makefile] Error 2

config.log是

This file contains any messages produced by compilers while
running configure, to aid debugging if configure makes a mistake.

configure:1019: checking host system type
configure:1040: checking target system type
configure:1058: checking build system type
configure:1141: checking for gawk
configure:1258: checking for perl5
configure:1258: checking for perl
configure:2350: checking for gcc
configure:2463: checking whether the C compiler (cl ) works
configure:2479: cl -o conftest conftest.c 1>&5
Microsoft (R) 32-bit C/C++ Optimizing Compiler Version 14.00.50727.762 for 80x86
Copyright (C) Microsoft Corporation. All rights reserved.

cl : Command line warning D9035 : option 'o' has been deprecated and will be removed in a future release
cl : Command line warning D9024 : unrecognized source file type 'c:/mozilla-build/msys/DTEST=2', object file assumed
conftest.c
Microsoft (R) Incremental Linker Version 8.00.50727.762
Copyright (C) Microsoft Corporation. All rights reserved.

/out:DTEST=2.exe
/out:conftest.exe
c:/mozilla-build/msys/DTEST=2
conftest.obj
LINK : fatal error LNK1181: cannot open input file 'c:/mozilla-build/msys/DTEST=2.obj'
configure: failed program was:

#line 2474 "configure"
#include "confdefs.h"

.mozconfig是

# Options for client.mk.
mk_add_options MOZ_OBJDIR=@TOPSRCDIR@/obj-firefox
mk_add_options MOZ_CO_PROJECT=browser

# Options for 'configure' (same as command-line options).
ac_add_options --disable-tests
ac_add_options --with-windows-version=501
ac_add_options --enable-application=browser
ac_add_options --disable-vista-sdk-requirements

有什么想法吗?

我对MSYS了解不多,但似乎MSYS和/或configure向编译器传递了一些奇怪的选项。编译器似乎将“c:/mozilla build/msys/DTEST=2”解释为源文件类型,这使我怀疑命令行上出现了/T(请参阅)


您是否可以使用
-x
选项运行配置脚本并提取精确的编译器命令行?

我尝试编译以下文件“TESTFILE.b”

我的文件位于路径/home/santy/dir1/TESTFILE.b中

我通过以/home/santy/>jcompile dir1/TESTFILE.b的形式执行命令,以下面的路径编译该文件

下面显示了错误

   cl : Command line warning D9035 : option 'o' has been deprecated and will be removed in a future release
  TESTFILE.c
  link @D:\Users\MSANTH~1\AppData\Local\Temp\jbuild385>D:\Users\MSANTH~1\AppData\Local\Temp\jbuild386 failed , command returned a code of 1181
  LINK : warning LNK4044: unrecognized option '/DWIN32'; ignored
  LINK : warning LNK4044: unrecognized option '/MD'; ignored
  LINK : warning LNK4044: unrecognized option '/W3'; ignored
  LINK : warning LNK4044: unrecognized option '/GR'; ignored
  LINK : warning LNK4044: unrecognized option '/EHsc'; ignored
  LINK : warning LNK4044: unrecognized option '/GF'; ignored
  LINK : warning LNK4044: unrecognized option '/F5000000'; ignored
  LINK : warning LNK4044: unrecognized option '/D_LARGEFILE_SOURCE'; ignored
  LINK : warning LNK4044: unrecognized option '/D_LARGEFILE64_SOURCE'; ignored
  LINK : warning LNK4044: unrecognized option '/D_FILE_OFFSET_BITS=64'; ignored
  LINK : fatal error LNK1181: cannot open input file 'QA\TESTFILE.obj'
  jcompile: QA\TESTFILE.j deleted
  jcompile: QA\TESTFILE.c deleted
 jcompile: Returned an error code of 8
cl版本:

针对80x86的Microsoft(R)32位C/C++优化编译器版本15.00.21022.08 版权所有(C)微软公司。版权所有


用法:cl[选项…]文件名。。。[/linkoption…]

我运行了“configure-x”,得到一个错误,即-x是无效的选项。我尝试了--x,得到了与上面类似的错误。所以,可能没有按照你的建议去做。我注意到,如果我在shell中单独输入“cl”,我会得到与上面类似的错误。似乎“cl”实际上是另一个脚本文件,它可能使用响应文件选项调用Microsoft C编译器来传递其他命令行值。对不起。我的意思是运行
sh-x./configure
。这将把-x传递给执行脚本的shell,该脚本将使其在执行之前显示所有行。只传递了-o选项compile选项。同样,真正奇怪的是,如果我在shell命令中单独运行“cl”,我会得到同样的上述错误。我在cl上做了一个“where”,它是正确的MSVC编译器。我没有使用完整路径,但得到了相同的错误。除了包含conftest.exe的任何行之外,其他行都存在相同的错误。但是有DTEST的行是存在的。非常混乱,这就像一个响应文件或其他命令行参数被“神奇地”插入到命令中。我尝试了“cl/?”和相同的错误。如果我在正常的DOS提示符下做的很好,我想MSYS确实会破坏一些命令行,是的。我对MSYS了解太少,无法在这方面帮助您。如果您有一个与旧问题相关的新问题,通常最好完全创建一个新问题-答案空间应保留用于回答。
   cl : Command line warning D9035 : option 'o' has been deprecated and will be removed in a future release
  TESTFILE.c
  link @D:\Users\MSANTH~1\AppData\Local\Temp\jbuild385>D:\Users\MSANTH~1\AppData\Local\Temp\jbuild386 failed , command returned a code of 1181
  LINK : warning LNK4044: unrecognized option '/DWIN32'; ignored
  LINK : warning LNK4044: unrecognized option '/MD'; ignored
  LINK : warning LNK4044: unrecognized option '/W3'; ignored
  LINK : warning LNK4044: unrecognized option '/GR'; ignored
  LINK : warning LNK4044: unrecognized option '/EHsc'; ignored
  LINK : warning LNK4044: unrecognized option '/GF'; ignored
  LINK : warning LNK4044: unrecognized option '/F5000000'; ignored
  LINK : warning LNK4044: unrecognized option '/D_LARGEFILE_SOURCE'; ignored
  LINK : warning LNK4044: unrecognized option '/D_LARGEFILE64_SOURCE'; ignored
  LINK : warning LNK4044: unrecognized option '/D_FILE_OFFSET_BITS=64'; ignored
  LINK : fatal error LNK1181: cannot open input file 'QA\TESTFILE.obj'
  jcompile: QA\TESTFILE.j deleted
  jcompile: QA\TESTFILE.c deleted
 jcompile: Returned an error code of 8