我正在尝试交叉编译一些代码以在ARM Cortex A8上运行(AR.Drone 2.0,如果它有所不同)。
我在我的Virtualbox上安装了Ubuntu 12.04 LTS 32位(使用Windows 7 64位主机),我的交叉编译代码完全正常。
在另一台计算机上,我安装了相同版本的Ubuntu(没有Virtualbox),但我遇到了奇怪的错误。我得到的最小的代码片段表明问题是一个“hello world”程序(如果需要,我可以在这里显示代码):
非常感谢任何想法/解决方案。我没有在我的Virtualbox上设置任何特殊功能,所以我很困惑为什么没有Virtualbox的PC无法正确交叉编译。
答案 0 :(得分:3)
如果您使用的是Filezilla等,请确保您没有使用“自动”作为传输模式。选择“二进制”,我有一个同样的问题,将一个简单的hello world程序从我的ubuntu转移到arm目标(Xilinx Zynq),经过几个小时的调查,我在ubuntu和目标上检查了可执行文件的md5,发现它们是不同。
答案 1 :(得分:0)
答案 2 :(得分:0)
即使在两台机器(VM和直接安装)上,我也面临同样的问题,但我还是无法解决它。
但是,以下“解决方法”对我有用(这实际上是通过 Mentor Graphics 安装ARM工具链,以前称为 Code Sourcery )来交叉编译AR无人机2):
通过键入来安装(如果要安装到系统目录,则需要sudo
)
$ chmod +x arm-2012.03-57-arm-none-linux-gnueabi.bin
$ ./arm-2012.03-57-arm-none-linux-gnueabi.bin
并逐步完成(图形)设置。
最后,使用位于
中的二进制文件编译源代码$INSTALL_PATH/CodeSourcery/Sourcery_CodeBench_Lite_for_ARM_GNU_Linux/bin/
例如:
./arm-none-linux-gnueabi-gcc -march=armv7-a hello.c -o helloworld
生成的二进制文件应该是可执行的,没有任何问题。 ; - )
为了完整性/所有其他读者:您可以使用连接到192.168.1.1的任何FTP客户端(例如,ftp
,WinSCP,FileZilla,...)将二进制文件复制到Drone(假设您的主机已连接到Drone创建的WLAN)。要执行它,请将可执行位设置为chmod +x helloworld
并运行./helloworld
。
BTW:AR Drone 2上没有“调试器”,但您可以通过在设备上启动gdbserver
来使用gdb远程调试(此工具已在设备上),请参阅(例如){ {3}}