(我通常使用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都不是,我也只需要例外!
有没有办法提供必要的辅助功能,以便异常有效?