c - Windows XP 上的 GCC 编译器错误

标签 c gcc windows-xp batch-file

我在尝试使用 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

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

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 的某些东西很特别,我无法弄清楚有什么区别。我确实复制了该行并更改了文件名以创建失败的其他两行。

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

谢谢。

PS:是的,我们正在使用批处理文件,我知道这会让你们中的一些人感到畏缩。然而,如果可能的话,我真的很想在继续讨论 makefile 之前了解这个错误。 ^_^

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

最佳答案

有效的行长度为 126 个字符,其他行长度为 130 和 136 个字符。问题是有 127 个字符的限制。我不知道如何解决这个问题,但也许 ma​​ke 会为你解决这个问题?...

关于c - Windows XP 上的 GCC 编译器错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/215933/

相关文章:

authentication - Okuma - 如何打开 Windows 开始菜单

c++ - 为什么要在 Linux 中挂载文件

在打印、转换中考虑 FPU 舍入模式的编译平台

gcc - gcc 将如何对同一命令中的 -O2 和 -O0 使用react?

audio - 在Windows XP上使用模拟器发出嗡嗡声

.net - 在 Windows XP 上开发 Windows Phone 7

c - 是否使用 Neon 协处理器?

c - 从c中的文件中读取字符串

c++ - 如何在 gcc 命令行中定义字符串文字?

从结构体中的函数指针调用函数