我试图为基于MIPS的嵌入式设备使用C++而不是C构建应用程序。首先,我有一个链接问题,您可以看到here。此问题已修复,我可以成功构建我的应用程序。现在,我想使用std::vector
类。我的代码是:
#include <vector>
using namespace std;
int main() {
vector<char> v;
v.push_back('s');
return 0;
}
当执行
vector<char> v;
行时,屏幕上会出现Segment Fault
消息。对于更多测试,我确实测试了new
运算符,并且工作正常。我正在使用mipsel-elf-g++
来构建我的应用程序。怎么了?
最佳答案
如注释中所述,您的编译器和/或其运行时库已损坏。 (您可以排除操作系统,因为“elf”目标意味着您没有在目标上运行操作系统,并且如果不存在它也不会被破坏。)
我建议不要尝试调试Cygwin的mipsel-elf-gcc
包(该包可能很旧且未经测试),而是建议您使用其他编译器。特别是,可以从http://www.mentor.com/embedded-software/sourcery-tools/sourcery-codebench/editions/lite-edition/免费下载GCC编译器以及相关的C和C++库的Mentor Graphics“Sourcery CodeBench Lite Edition”版本-基本上,它应该可以直接替代您要使用的Cygwin编译器使用(即使名义上是作为“普通Windows”编译器构建的,也可以正确使用Cygwin路径),不同之处在于它已经过测试和验证,可以真正正常工作。
[免责声明:我为Mentor Graphics工作,所以不能说我没有偏见-但我们确实为使该编译器正常工作付出了很多工作,并且MIPS与我们签约以免费将其提供给全世界,因此我们有动力确保其正常运行。另外,如果您熟悉CodeSourcery的“Sourcery G++”编译器,由于CodeSourcery是Mentor Graphics的一部分,“Sourcery CodeBench”是它们的新名称。