我正处于在BeagleBoneBlack上开发无人机飞行Controller的(非常)早期阶段。我应该提一下,当涉及到BBB、Linux和嵌入式系统时,我还是个新手。我的学术重点一直是控制理论——这是我第一次尝试在Matlab模拟之外进行实际实现。我目前的系统如下:主机->运行EclipseLuna(4.4.0)的Windows8.1x64目标->BeagleBoneBlack修订版。B运行Ubuntu13.10目标信息root@arm:~#uname-aLinuxarm3.8.13-bone32#1SMPFriDec1320:05:25UTC2013armv7larmv7larmv7
arm-none-eabi和arm-linux-gnueabi有什么区别?我知道如何使用它们的区别(一个用于裸机软件,另一个用于在linux上运行的软件)。但是技术背景是什么?我发现ABI有所不同,据我所知,它类似于API,但在二进制级别。它确保了不同应用程序的互操作性。但我真的不明白拥有或不拥有操作系统会以何种方式影响我的工具链。我唯一想到的是,在编译裸机软件时,库可能必须静态链接(是吗?),因为没有操作系统动态提供它们。我发现与该主题相关的大多数页面只是回答了如何使用工具链,而不是技术背景。我是机电一体化专业的学生,刚接触嵌入式系统,所以我在这个领域的经验有些有限。
arm-none-eabi和arm-linux-gnueabi有什么区别?我知道如何使用它们的区别(一个用于裸机软件,另一个用于在linux上运行的软件)。但是技术背景是什么?我发现ABI有所不同,据我所知,它类似于API,但在二进制级别。它确保了不同应用程序的互操作性。但我真的不明白拥有或不拥有操作系统会以何种方式影响我的工具链。我唯一想到的是,在编译裸机软件时,库可能必须静态链接(是吗?),因为没有操作系统动态提供它们。我发现与该主题相关的大多数页面只是回答了如何使用工具链,而不是技术背景。我是机电一体化专业的学生,刚接触嵌入式系统,所以我在这个领域的经验有些有限。
我可以使用arm-linux-gnueabi-*工具链为我的android设备编译文件(例如C或C++源代码)吗?我的问题可能看起来有点傻,但我会得到与使用arm-linux-androideabi-*工具链编译相同的结果吗? 最佳答案 编译可能不仅仅意味着将源代码转换为二进制文件。像GCC这样的编译器也提供某些库,在本例中为libgcc用于处理硬件无法处理的问题。当编译器成为工具链时,它还提供与目标系统中提供的类似的编程语言标准化的运行时库。在arm-linux-gnueabi-的情况下可能是libc对于arm-linux-and
我可以使用arm-linux-gnueabi-*工具链为我的android设备编译文件(例如C或C++源代码)吗?我的问题可能看起来有点傻,但我会得到与使用arm-linux-androideabi-*工具链编译相同的结果吗? 最佳答案 编译可能不仅仅意味着将源代码转换为二进制文件。像GCC这样的编译器也提供某些库,在本例中为libgcc用于处理硬件无法处理的问题。当编译器成为工具链时,它还提供与目标系统中提供的类似的编程语言标准化的运行时库。在arm-linux-gnueabi-的情况下可能是libc对于arm-linux-and
我正在32位Windows(使用MSVC++)上用C++开发一个软件,但由于我希望能够在每个平台上使用我的软件,我决定使用CMake作为我的构建生成器。因此,我仍然只是CMake的初学者。从CMake教程中,我了解到为了交叉编译代码,首先应该在主机平台上安装一个模拟目标平台的工具链。然后使用此工具链提供的适当目标平台C和C++编译器,CMake将能够生成makefile等。现在,我想在Win32平台上为Linux平台(GNU/Linux)构建我的代码。我尝试使用CMake结合Cygwin并使用gcc和g++作为编译器来执行上述过程。它构建良好,创建了makefile,当我在Cygwin
我正在32位Windows(使用MSVC++)上用C++开发一个软件,但由于我希望能够在每个平台上使用我的软件,我决定使用CMake作为我的构建生成器。因此,我仍然只是CMake的初学者。从CMake教程中,我了解到为了交叉编译代码,首先应该在主机平台上安装一个模拟目标平台的工具链。然后使用此工具链提供的适当目标平台C和C++编译器,CMake将能够生成makefile等。现在,我想在Win32平台上为Linux平台(GNU/Linux)构建我的代码。我尝试使用CMake结合Cygwin并使用gcc和g++作为编译器来执行上述过程。它构建良好,创建了makefile,当我在Cygwin
我正在为Android应用程序编写基于ARMNEON的代码,但我正在为某些编译器标志无法识别而苦苦挣扎。后来我意识到对这些标志的支持是最近才添加的,而且我的GCC版本较旧。我在Windows上做所有事情,并且受到Cygwin提供的版本的限制。这是我的问题:在我尝试在我的Windows机器上构建GCC4.6.0并让Cygwin喜欢它之前,它对我有用还是NDK使用它自己的GCC版本,我的升级根本不会影响它?如果是,是否可以告诉它使用不同的编译器? 最佳答案 关于NDKr8d,它可以通过2种方式进行修改(参见Andriodndk):对于n
我正在为Android应用程序编写基于ARMNEON的代码,但我正在为某些编译器标志无法识别而苦苦挣扎。后来我意识到对这些标志的支持是最近才添加的,而且我的GCC版本较旧。我在Windows上做所有事情,并且受到Cygwin提供的版本的限制。这是我的问题:在我尝试在我的Windows机器上构建GCC4.6.0并让Cygwin喜欢它之前,它对我有用还是NDK使用它自己的GCC版本,我的升级根本不会影响它?如果是,是否可以告诉它使用不同的编译器? 最佳答案 关于NDKr8d,它可以通过2种方式进行修改(参见Andriodndk):对于n
我下载了一个自定义工具链(linaro)来构建基于ARM的Android应用程序。我如何告诉NDK使用它?我可以在Android.mk和Application.mk中定义或设置一些允许我这样做的东西吗?还有其他方法吗? 最佳答案 NDK的makefile系统非常可扩展,您确实可以定义不同的工具链。您需要对Make的工作原理有所了解。工具链在build/core/init.mk第261行中被发现和初始化(在NDKr6中,行#可能会在未来版本中更改)。初始化代码在$(NDK_ROOT)/toolchains/*下查找名为config.m