我正在使用Raspberry Pi和我的计算机,尝试交叉编译一个简单的C++ helloWorld程序。我正在使用Code Sourcery Linux工具链进行编译。
当通过TFTP将helloWorld二进制文件复制到Raspberry上,并使用chmod命令给予其执行权限时,会出现"非法指令"的报错信息。
如果在链接时使用了"-static -static-libstdc++"参数,那么当对这个二进制文件执行"file"命令时,会显示以下信息:"raspberry: ELF 32-bit LSB可执行文件,ARM架构,版本1 (SYSV),静态链接,已剥离"
如果不使用静态链接,错误信息则变成:"分段错误"
代码:
/*
* main.cpp
*
* Created on: 26/06/2012
* Author: ccortiz
*/
#include <iostream>
using namespace std;
int main(void){
cout << "Hello Cross Compilling for ARM!" << endl << flush;
return 0;
}
如何正确编译和运行我的程序? 谢谢。
endl
已经自带flush
功能,所以你故意刷新两次。这就是为什么我更喜欢一开始就使用'\n'
而不是endl
的原因。 - BoBTFish