代码之家  ›  专栏  ›  技术社区  ›  Blank

Windows XP上的GCC编译器错误

  •  2
  • Blank  · 技术社区  · 17 年前

    我在尝试使用gcc编译C程序时遇到了一个非常奇怪的错误。这是我正在使用的批处理文件:

    echo Now compiling, assembling, and linking the core:
    nasm -f aout -o start.o start.asm
    
    gcc -Wall -O -fstrength-reduce -fomit-frame-pointer -finline-functions -nostdinc -fno-builtin -I./include -c -o consoleio.o consoleio.c
    gcc -Wall -O -fstrength-reduce -fomit-frame-pointer -finline-functions -nostdinc -fno-builtin -I./include -c -o core.o core.c
    gcc -Wall -O -fstrength-reduce -fomit-frame-pointer -finline-functions -nostdinc -fno-builtin -I./include -c -o system.o system.c
    
    ld -T link.ld -o core.bin start.o core.o system.o consoleio.o
    echo Done!
    
    concat.py
    
    pause
    

    下面是我在尝试运行此代码时收到的错误消息。所有文件都在同一目录中,是的,路径变量设置正确:

    C:\Simple\core>build.bat
    
    C:\Simple\core>echo Now compiling, assembling, and linking the core:
    Now compiling, assembling, and linking the core:
    
    C:\Simple\core>nasm -f aout -o start.o start.asm
    
    C:\Simple\core>gcc -Wall -O -fstrength-reduce -fomit-frame-pointer -finline-func
    tions -nostdinc -fno-builtin -I./include -c -o consoleio.o consoleio.c
    The system cannot execute the specified program.
    
    C:\Simple\core>gcc -Wall -O -fstrength-reduce -fomit-frame-pointer -finline-func
    tions -nostdinc -fno-builtin -I./include -c -o core.o core.c
    
    C:\Simple\core>gcc -Wall -O -fstrength-reduce -fomit-frame-pointer -finline-func
    tions -nostdinc -fno-builtin -I./include -c -o system.o system.c
    The system cannot execute the specified program.
    
    C:\Simple\core>ld -T link.ld -o core.bin start.o core.o system.o consoleio.o
    c:/djgpp/bin/ld.exe: system.o: No such file: No such file or directory (ENOENT)
    
    C:\Simple\core>echo Done!
    Done!
    
    C:\Simple\core>concat.py
    Traceback (most recent call last):
      File "C:\Simple\core\concat.py", line 12, in <module>
        with open("core.bin", "rb") as core:
    IOError: [Errno 2] No such file or directory: 'core.bin'
    

    现在,有趣的是gcc命令,这是我面临的问题。(其他的问题似乎是从这个层叠而来的。)在编译core.c时,gcc命令工作得非常好,并按预期生成一个.o文件。当试图编译system.c或consoleio.c时,gcc失败了,但以一种非常意外的方式出现:它看起来好像Windows无法运行程序。这使得 对我有感觉。我尝试过很多方法,包括在窗口外自己运行这些命令。关于core.c的一些东西很特别,我不知道有什么区别。我从字面上复制了这一行,并更改了文件名以创建其他两行失败的文件。

    所以,简而言之,帮助。我在WindowsXP上使用了djgpp和gcc,最后还使用了一个python脚本,该脚本应该将所有内容捆绑在一起。(当项目是单个源文件时,这一切都有效,但尝试将文件拆分为单独的文件会导致这种奇怪的错误。)

    谢谢。

    PS:是的,我们 使用一个批处理文件,我知道这让你们中的一些人感到害怕。但是,如果可能的话,在转到makefile之前,我真的很想了解这个错误。^ ^ ^

    编辑:接受的答案确实是我们的问题,虽然问题是与DJGPP,而不是Windows。(Windows似乎没有命令限制。)解决方案是使用mingw而不是djgpp进行编译,djgpp立即解决了这个问题。谢谢大家!

    3 回复  |  直到 15 年前
        1
  •  5
  •   Paige Ruten    17 年前

    行的长度是126个字符,其他的是130和136个字符。问题是有127个字符的限制。我不知道怎么解决这个问题,但也许 制作 会帮你转转吗?…

        2
  •  0
  •   CesarB    17 年前

    将-v添加到gcc命令行。gcc实际上是一个驱动程序,它运行其他几个辅助程序(传统上是预处理器、编译器和汇编程序);-v使其在执行时显示其命令行,并启用详细模式。有了这个,你就可以看到它在哪里失败了。

        3
  •  0
  •   Rugxulo    15 年前

    如前所述,djgpp make(或bash)甚至一个简单的响应文件都可以解决这个问题,所以这不是问题。DJGPP仍然有足够的优势,只要它做什么。(另请参见ELF端口或Japheth的HX模块。)

    推荐文章