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

时间:2017-06-22 17:26:24

标签: c++ g++ cygwin

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

chai.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上构建时,此问题不会出现。

1 个答案:

答案 0 :(得分:0)

我从Chaiscript CMakeLists.txt发现了这个问题的解决方法:

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

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