在 Cygwin G++ 上编译的文件太大

File too big compiling on Cygwin G++

本文关键字:文件 编译 Cygwin G++      更新时间:2023-10-16

我正在专门构建一个测试程序来处理Chaiscript,这就是我遇到这个问题的方式:

柴.cpp:

#include <cstdio>
#include <iostream>
#include <chaiscript/chaiscript.hpp>
#include <chaiscript/chaiscript_stdlib.hpp>
std::string helloWorld(const std::string &t_name)
{
  return "Hello " + t_name + "!";
}
int main(int argc, char** argv, char** env)    {
  chaiscript::ChaiScript chai;
  chai.add(chaiscript::fun(&helloWorld), "helloWorld");
  chai.eval("puts(helloWorld("Bob"));");
    return 0L;
}

/usr/lib/gcc/i686-pc-cygwin/5.4.0/../../../../i686-pc-cygwin/bin/as: CMakeFiles/chai.dir/src/chai.cpp.o: too many sections (37830)
/tmp/ccqGbeku.s: Assembler messages:
/tmp/ccqGbeku.s: Fatal error: can't write CMakeFiles/chai.dir/src/chai.cpp.o: File too big
/usr/lib/gcc/i686-pc-cygwin/5.4.0/../../../../i686-pc-cygwin/bin/as: CMakeFiles/chai.dir/src/chai.cpp.o: too many sections (37830)

当我在 Mac 或 Linux 上构建时,不会出现此问题。

我从Chaiscript CMakeList中发现了解决此问题的方法.txt:

if(MINGW OR CYGWIN)
  add_definitions(-O3)
endif()

互联网上的其他搜索表明这个大对象问题与Windows可执行格式相关联,并且不太可能在G ++中解决。 在我的情况下,使用 MingW32 并没有解决此错误 - 我不打算使用 64 位。

  • 目标文件包含太多节