关于c++代码/工具链构建的非法指令
Vortex86DX Illegal instruction on C++ code/toolchain build
我安装了Ubuntu 12.01和gcc 4.8.2,并在运行旧的2.6.23内核的Vortex86DX CPU上进行了交叉编译。
我正在尝试以下测试代码:
#include <iostream>
int main()
{
std::cout << "Hello world" << std::endl;
}
使用以下命令行编译:
g++ -march=i586 test.cpp -o test586 -static -static-libgcc -static-libstdc++
当我在目标架构上运行test586时,我得到了这个错误:
$ ./test586
Illegal instruction
嗯,正如这里所指出的,我似乎需要为给定的体系结构构建整个工具链,但我真的很困惑如何做到这一点:
A)由于我目前使用的是Ubuntu 12.01,它是为i686架构构建的。我应该在这个Ubuntu中构建新的工具链吗?我是否应该用旧的Ubuntu构建一个VM并编译它(这对我来说是一个问题,因为我需要c++ 00x -C11支持,而Ubuntu喜欢10。
b)我不能在目标硬件中构建,因为它有很少的内存和磁盘(256Mb RAM)和一个非常旧的Linux内核2.6.23。
我真的很困惑如何解决这个问题,感谢帮助。
这是因为您的libstdc++链接为i686版本,与vortex平台不兼容。当你切换到动态链接(默认情况下是启用的),你的例子将完美地工作。
相关文章:
- C++为构建时间获取QDateTime的可靠方法
- 无法在 CLion 中构建 C++ 项目
- 函数向量_指针有不同的原型,我可以构建一个吗
- 如何使用ndk-build.cmd构建Android.so文件
- 无法编译 rtmidi 测试 cmidiin.cpp 文件, 非法指令
- libssh 的函数在构建 libssh 时无法在 Qt 和 cmake 错误中找到
- 使用cmake从源代码构建MySQL连接器/C++失败(与以前的声明冲突)
- VSCode-有一个红色下划线,但程序构建和运行正确,并且出现配音错误
- 构建可组合有向图(扫描仪生成器的汤普森构造算法)
- 无法使用Qt Creator在Windows中构建yaml-cpp
- 构建一个由C和C++文件组成的库
- llvm构建器向基本块添加终止符
- 编写代码时C++出现错误:错误 1 错误 C2601:'circle':本地函数定义是非法的
- FLTK 2.0构建和演示,适用于VS2019的2011年左右的代码库
- 如何跨平台将二进制资源构建到程序中?
- 将 OpenCV 与 CMAKE 中的项目一起构建为第三方库的正确方法
- 如何解决 Ninja c++ 构建和执行问题
- 使用 cmake 的 LLVM 构建在 tsan_libdispatch_mac.cc 期间失败; "Error: conflicting types for ..."
- CMake WxWidgets项目成功地在Linux上构建,但没有在Windows上构建
- 关于c++代码/工具链构建的非法指令