2

(我通常使用 C 而不是 C++,所以请原谅这个问题:)

我正在尝试使用没有 libstdc++(称为独立式)的 MinGW-GCC C++11,以避免落入其 GPL 之下。

我在让它工作时遇到了一些麻烦,但这几乎可以满足我的要求:

g++ main.cpp -o main.exe -s -Os -lkernel32 -luser32 
  -std=c++11 -Wall -Werror 
  -Wl,-e_Main -mwindows
  -nostdlib -ffreestanding -fno-rtti -fno-exceptions

现在的最后一个问题是,我想要例外,所以如果我-fno-exceptions再次删除,我会得到

main.cpp:(.text+0x265): undefined reference to `_Unwind_Resume'
main.cpp:(.eh_frame+0xcb): undefined reference to `__gxx_personality_v0'
bad reloc address 0xcb in section `.eh_frame'

我发现需要这些辅助函数来展开堆栈并调用该路径上的析构函数。(我觉得这些被认为是标准库的一部分有点疯狂。如果 gcc 不能提供没有它们的核心语言,它们应该是内在的。)

我看过例如 STLport 和 Apache stdcxx,但 C++11 都不是,我也只需要例外!

有没有办法只提供必要的帮助函数以便异常工作?

4

0 回答 0