- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
我在使用 CMake 链接我的 STM32 项目时遇到困难。生成的链接命令是:
/Users/jeremy/gcc-arm-none-eabi-6-2017-q2-update/bin/arm-none-eabi-g++ -mcpu=cortex-m4 -mthumb -mfpu=fpv4-sp-d16 -mfloat-abi=hard -fdata-sections -ffunction-sections -g -Og -gdwarf-2 -MMD -MP -std=c++11 -Wl,-search_paths_first -Wl,-headerpad_max_install_names -specs=nano.specs -T/Users/jeremy/stm32l432kc_freertos_template/STM32L432KCUx_FLASH.ld -Wl,-Map=target.map,--cref -Wl,--gc-sections
< ... lots of .o files here ...>
-o stm32l432kc_freertos -lc -lm -lnosys
不幸的是,我遇到了两组错误。第一个是:
arm-none-eabi/bin/ld: warning: cannot find entry symbol arch_paths_first; defaulting to 0000000008000190
表示没有入口符号,但是LD文件中第一行代码是:ENTRY(Reset_Handler)
。符号 Reset_Handler
在链接文件 startup_stm32l432xx.s
中定义。
第二组错误与标准库有关:
/Users/jeremy/gcc-arm-none-eabi-6-2017-q2-update/bin/../lib/gcc/arm-none-eabi/6.3.1/../../../../arm-none-eabi/lib/thumb/v7e-m/fpv4-sp/hard/libg_nano.a(lib_a-signalr.o): In function `_kill_r':
signalr.c:(.text._kill_r+0xe): undefined reference to `_kill'
/Users/jeremy/gcc-arm-none-eabi-6-2017-q2-update/bin/../lib/gcc/arm-none-eabi/6.3.1/../../../../arm-none-eabi/lib/thumb/v7e-m/fpv4-sp/hard/libg_nano.a(lib_a-signalr.o): In function `_getpid_r':
signalr.c:(.text._getpid_r+0x0): undefined reference to `_getpid'
应该通过链接 -lnosys
来解决,但链接器似乎忽略了这一点。
从本质上讲,链接器似乎忽略了 LD 文件中的一些指令并忽略了我传递的一些标志。我意识到这可能是我做错了什么,但我看不出是什么。
如果我添加 -specs=nosys.specs
后两个错误就会消失,但这不是必需的吗?有人可以帮我了解这里出了什么问题吗?
最佳答案
看起来 OSX 上的 CMake 正在添加 gcc arm 工具链不支持的 -Wl,-search_paths_first
。修复是将其添加到 CMakelists.txt 文件中:
if ( APPLE )
string ( REPLACE "-Wl,-search_paths_first" "" CMAKE_C_LINK_FLAGS ${CMAKE_C_LINK_FLAGS} )
string ( REPLACE "-Wl,-search_paths_first" "" CMAKE_CXX_LINK_FLAGS ${CMAKE_CXX_LINK_FLAGS} )
endif ()
修复从这里获取:https://github.com/kiibohd/controller/blob/master/Lib/CMake/build.cmake
仍然不知道 -lnosys
被忽略了。
关于c++ - 使用 arm-none-eabi-gcc、newlib 和 cmake 链接 C/C++ STM32 项目,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45874166/
这里有两个问题: 将共享库移植到许多 Linux-or-Android-on-ARM 系统时,需要知道 GCC 交叉编译器支持的确切 EABI 版本以及默认的 EABI 版本。怎么做? 如何调查哪个
我正在使用 Launchpad Arm 编译器工具。具体来说, arm-none-eabi-g++ 和 arm-none-eabi-gcc 来自: (ARM 嵌入式处理器的 GNU 工具)5.2.1
我正在使用下面的 gcc 工具链。gcc 版本 5.4.1 20160919(发布)[ARM/embedded-5-branch 修订版 240496](用于 ARM 嵌入式处理器的 GNU 工具)
我正在尝试使用arm-none-eabi-gcc为STM32编译一个USB环回示例,但遇到了bool变量的编译器错误。错误为错误:“_Bool”之前应有“;”、标识符或“(”,违规行为 typedef
如果一个 Android 应用程序最初只支持 armeabi-v7a 和 x86,并且在未来它增加了对 arm64-v8a 的支持,设备(主要和次要 ABI 分别是 arm64-v8a 和 armea
我有一个复杂的开源库需要移植到安卓NDK。首先,我需要配置 (./Configure)。我明白:我必须使用/home/user/android-ndk/build/prebuilt/进行交叉编译lin
我们在Android开发中需要ARM EABI v7a系统镜像做什么?该特定图像的目的是什么? 最佳答案 如果您使用 NativeDK,没有该图像,模拟器将无法模拟 ARMv7 代码的执行(如多核指令
已结束。此问题正在寻求书籍、工具、软件库等的推荐。它不满足Stack Overflow guidelines 。目前不接受答案。 我们不允许提出寻求书籍、工具、软件库等推荐的问题。您可以编辑问题,以便
我在 Linux 机器上用 C 语言编写了一个 hello world 程序。编译是使用工具链 arm-none-eabi-gcc 完成的(稍后我将使用它进行交叉编译)。但我想在进一步推进之前在同一台
我有一个视频模块,我正在使用 arm-eabi-gcc 交叉编译器进行编译。我使用以下命令进行编译$ arm-eabi-gcc -O2 -DMODULE -D__KERNEL__ -W -Wall -
我正在为我的 Android 项目运行 arm-eabi-addr2line,我的命令是 /Applications/android-sdk-mac_86/android-ndk-r5b/toolch
我正在尝试在树莓派上安装用于汇编代码的工具链。我使用以下过程来安装包文件: $ wget http://www.cl.cam.ac.uk/freshers/raspberrypi/tutorials/
我正在通过 arm-unknown-linux-gnueabi 交叉编译我的代码,在编译期间可以看到很多以下警告 Unknown EABI object attribute 44 上面的警告是可以忽略
我正在 64 位 Linux 机器上用 C 编译一个 hello world 程序。我正在使用 GCC ARM 嵌入式工具链在配备 ATMEL AT91SAM9G20 处理器的 FOX G20 V 板
arm-eabi-gcc和arm-elf-gcc有什么区别? 他们可以为cortex-m3 arch编译相同的源代码吗? 最佳答案 arm-elf-gcc是支持旧版浮点加速器(FPA)和混合字节序浮点
我越看这个 PDF ( Application Binary Interface forthe ARM Architecture: The Base Standard ),我就越不明白它的意思。我还想
我正在尝试将“眨眼”示例上载到我的MKR1000。但是,我一直收到相同的错误: fork/exec /Users/username/Library/Arduino15/packages/arduino
我正在尝试在minGW中使用arm-none-eabi-gcc编译HELLOWORLD.c,命令如下: D:\code>arm-none-eabi-gcc hello.c -o hello -shar
我正在尝试为 STM32L030x6 MCU 制作固件。 我编写了一个简单的代码,似乎可以在具有 STM32L030x8 MCU 的评估板上运行。我所说的“似乎有效”是指我能够访问主 fct 并切换
我在库中有一个头文件,其中包括 inttypes.h (使用 PRIu8 等所需)。我将库头文件包含到我自己的应用程序文件中。 当我尝试在lpcxpresso(基于eclipse)中使用arm-non
我是一名优秀的程序员,十分优秀!