我正在尝试移植Linux库以在VxWorks上运行。我已经成功构建了binutils和gcc来针对 i486-wrs-vxworks ,并且我可以成功构建一个简单的C程序。但是,当我尝试编译C++时,事情中断了。
我有一个简单的Hello World程序:
#include <string>
#include <iostream>
int main()
{
std::string s = "Hello World";
std::cout << s << std::endl;
return 0;
}
要构建它,我称:
i486-wrs-vxworks-gcc -I/home/kyle/vxworks-6.9/target/usr/h -I/home/kyle/vxworks-6.9/target/usr/h/c++ hello.cpp
这总是失败,并显示以下消息:
In file included from /home/kyle/vxworks-6.9/target/usr/h/c++/cerrno:4:0,
from /home/kyle/vxworks-6.9/target/usr/h/c++/xlocnum:4,
from /home/kyle/vxworks-6.9/target/usr/h/c++/ios:4,
from /home/kyle/vxworks-6.9/target/usr/h/c++/ostream:4,
from /home/kyle/vxworks-6.9/target/usr/h/c++/istream:4,
from /home/kyle/vxworks-6.9/target/usr/h/c++/string:4,
from hello.cpp:1:
/usr/local/lib/gcc/i486-wrs-vxworks/4.6.4/../../../../i486-wrs-vxworks/include/yvals.h:4:24: fatal error: yvals.h: No such file or directory
如果我去看看
/usr/local/i486-wrs-vxworks/include/yvals.h
,这是我看到的:/* yvals.h values header for conforming compilers on various systems */
#if (defined(__cplusplus) && defined(__GNUC__))
/* GCC C++ has it's own yvals.h */
#include_next <yvals.h>
#else /* __cplusplus && __GNUC__ */
#ifndef _YVALS
#define _YVALS
#ifdef _NO_WINDRIVER_MODIFICATIONS
#include <stdarg.h>
#endif
...
似乎还需要包含另一个
yvals.h
,但我在任何地方都找不到它。我只是无法正确构建gcc,还是有办法解决? 最佳答案
您正在使用哪个版本的VxWorks?
我有一个模糊的回忆,过去升级VxWorks版本时,需要解决yvals.h中的语法错误,该错误已在后续版本中修复。
此外,您还可以从WindRiver中预先构建gcc交叉编译器。只需使用您的许可证号登录windriver.com/support,然后转到产品版本的“下载”即可。
关于c++ - 用于VxWorks的GCC交叉编译器无法编译C++,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/14464887/