Toggle navigation
首页
问答
文章
积分商城
专家
专区
更多专区...
文档中心
返回主站
搜索
提问
会员
中心
登录
注册
打开Support C++ features后编译失败
发布于 2018-12-11 23:14:28 浏览:2331
订阅该版
移植一个开源项目,想把它的操作系统换成rtthread。它是用c++写的,所以我尝试了下rtthread的c++组件,打开后编译失败,具体信息如下: rthread分支:stable-v3.0.x commit id: 60265d9 bsp: stm32f4xx-HAL 通过env配置,打开了如下选项: Support C++ features Enable libc APIs from toolchain Enable pthreads APIs 编译的错误提示如下: Error in calling: g++ -o "build\kernel\components\cplusplus\crt.o" -c -mcpu=cortex-m4 -mthumb -mfpu=fpv4-sp-d16 -mfloat-abi=hard -ffunction-sections -fdata-sections -std=c99 -Dgcc -O0 -gdwarf-2 -g -DHAVE_CCONFIG_H -DSTM32F407xx -DUSE_HAL_DRIVER -DRT_USING_NEWLIB -I. -Iapplications -Idrivers -ILibraries\CMSIS\Device\ST\STM32F4xx\Include -ILibraries\CMSIS\Include -ILibraries\STM32F4xx_HAL_Driver\Inc -IE:\Embedded\RT-Thread\src t-thread\include -IE:\Embedded\RT-Thread\src t-thread\libcpu\arm\cortex-m4 -IE:\Embedded\RT-Thread\src t-thread\libcpu\arm\common -IE:\Embedded\RT-Thread\src t-thread\components\cplusplus -IE:\Embedded\RT-Thread\src t-thread\components\drivers\include -IE:\Embedded\RT-Thread\src t-thread\components\drivers\include -IE:\Embedded\RT-Thread\src t-thread\components\drivers\include -IE:\Embedded\RT-Thread\src t-thread\components\finsh -IE:\Embedded\RT-Thread\src t-thread\components\libc\compilers
ewlib -IE:\Embedded\RT-Thread\src t-thread\components\libc\pthreads -IE:\Embedded\RT-Thread\src t-thread\components\libc\time "E:\Embedded\RT-Thread\src t-thread\components\cplusplus\crt.cpp" Exception: [Error 2] : No such file or directory scons: *** [build\kernel\components\cplusplus\crt.o] Error 2 scons: building terminated because of errors. E:\Embedded\RT-Thread\src t-thread\components\cplusplus\crt.cpp是存在的,不知它为啥提示没有文件或者目录。 我编译的是stm32f4的程序,我看它用的是g++来编译crt.cpp。编译.c文件时是没问题的,用的是arm-none-eabi-gcc,估计是没配置c++编译器吧。 我看rtconfig.py中是有配置CC,如下: PREFIX = 'arm-none-eabi-' CC = PREFIX + 'gcc' 我在CC那行下面配置CXX CXX = PREFIX + 'g++' 编译的时候,依然使用g++。一脸懵,求解。
查看更多
5
个回答
默认排序
按发布时间排序
yqiu
2018-12-12
这家伙很懒,什么也没写!
可以参考下 qemu-vexpress-a9 这个 BSP,默认已经打开 C++ 功能了。
yqiu
2018-12-12
这家伙很懒,什么也没写!
这确实是个 bug,在 qemu-vexpress-a9 BSP 下,能够正确使用 arm-none-eabi-g++ 来编译,所以没问题。在 stm32f4xx-HAL BSP 下,使用了 g++ 来进行编译,所以出问题。
wenbodong
2018-12-13
这家伙很懒,什么也没写!
>这确实是个 bug,在 qemu-vexpress-a9 BSP 下,能够正确使用 arm-none-eabi-g++ 来编译,所以没问题。在 st ... --- 多谢,参考后如下修改即可 diff --git a/bsp/stm32f4xx-HAL/SConstruct b/bsp/stm32f4xx-HAL/SConstruct index ea1e8bf..fd53cb3 100644 --- a/bsp/stm32f4xx-HAL/SConstruct +++ b/bsp/stm32f4xx-HAL/SConstruct @@ -20,6 +20,7 @@ TARGET = 'rtthread-stm32f4xx.' + rtconfig.TARGET_EXT env = Environment(tools = ['mingw'], AS = rtconfig.AS, ASFLAGS = rtconfig.AFLAGS, CC = rtconfig.CC, CCFLAGS = rtconfig.CFLAGS, + CXX = rtconfig.CXX, CXXFLAGS = rtconfig.CXXFLAGS, AR = rtconfig.AR, ARFLAGS = '-rc', LINK = rtconfig.LINK, LINKFLAGS = rtconfig.LFLAGS) env.PrependENVPath('PATH', rtconfig.EXEC_PATH) diff --git a/bsp/stm32f4xx-HAL/rtconfig.py b/bsp/stm32f4xx-HAL/rtconfig.py index d8de63d..61ae97f 100644 --- a/bsp/stm32f4xx-HAL/rtconfig.py +++ b/bsp/stm32f4xx-HAL/rtconfig.py @@ -35,6 +35,7 @@ if PLATFORM == 'gcc': # tool-chains PREFIX = 'arm-none-eabi-' CC = PREFIX + 'gcc' + CXX = PREFIX + 'g++' AS = PREFIX + 'gcc' AR = PREFIX + 'ar' LINK = PREFIX + 'gcc' @@ -46,7 +47,7 @@ if PLATFORM == 'gcc': DEVICE = ' -mcpu=cortex-m4 -mthumb -mfpu=fpv4-sp-d16 -mfloat-abi=hard -ffunction-sections -fdata-sections' CFLAGS = DEVICE + ' -std=c99 -Dgcc' # -D' + PART_TYPE AFLAGS = ' -c' + DEVICE + ' -x assembler-with-cpp -Wa,-mimplicit-it=thumb ' - LFLAGS = DEVICE + ' -Wl,--gc-sections,-Map=rtthread-stm32.map,-cref,-u,Reset_Handler -T stm32_rom.ld' + LFLAGS = DEVICE + ' -nostartfiles -Wl,--gc-sections,-Map=rtthread-stm32.map,-cref,-u,Reset_Handler -T stm32_rom.ld' CPATH = '' LPATH = '' @@ -57,6 +58,8 @@ if PLATFORM == 'gcc': else: CFLAGS += ' -O2' + CXXFLAGS = CFLAGS + ' -Woverloaded-virtual -fno-exceptions -fno-rtti' + POST_ACTION = OBJCPY + ' -O binary $TARGET rtthread.bin\n' + SIZE + ' $TARGET \n' elif PLATFORM == 'armcc': diff --git a/bsp/stm32f4xx-HAL/stm32_rom.ld b/bsp/stm32f4xx-HAL/stm32_rom.ld index aa9c9b2..1303f53 100644 --- a/bsp/stm32f4xx-HAL/stm32_rom.ld +++ b/bsp/stm32f4xx-HAL/stm32_rom.ld @@ -60,6 +60,23 @@ SECTIONS _sidata = .; } > CODE __exidx_end = .; + + . = ALIGN(4); + .ctors : + { + PROVIDE(__ctors_start__ = .); + KEEP(*(SORT(.ctors.*))) + KEEP(*(.ctors)) + PROVIDE(__ctors_end__ = .); + } > CODE + + .dtors : + { + PROVIDE(__dtors_start__ = .); + KEEP(*(SORT(.dtors.*))) + KEEP(*(.dtors)) + PROVIDE(__dtors_end__ = .); + } > CODE /* .data section which is used for initialized data */
yqiu
2018-12-14
这家伙很懒,什么也没写!
wenbodong,可以直接提个 PR 到 github 上,这也是对社区的贡献。
wenbodong
2018-12-15
这家伙很懒,什么也没写!
>wenbodong,可以直接提个 PR 到 github 上,这也是对社区的贡献。 --- 我看了几个其他的分支,都存在这个问题。我先试着提交我用的这个分支哈,第一次提交,先学习下流程。
撰写答案
登录
注册新账号
关注者
0
被浏览
2.3k
关于作者
wenbodong
这家伙很懒,什么也没写!
提问
19
回答
44
被采纳
3
关注TA
发私信
相关问题
推荐文章
1
RT-Thread应用项目汇总
2
玩转RT-Thread系列教程
3
国产MCU移植系列教程汇总,欢迎查看!
4
机器人操作系统 (ROS2) 和 RT-Thread 通信
5
五分钟玩转RT-Thread新社区
6
【技术三千问】之《玩转ART-Pi》,看这篇就够了!干货汇总
7
关于STM32H7开发板上使用SDIO接口驱动SD卡挂载文件系统的问题总结
8
STM32的“GPU”——DMA2D实例详解
9
RT-Thread隐藏的宝藏之completion
10
【ART-PI】RT-Thread 开启RTC 与 Alarm组件
最新文章
1
GD32F450 片内 flash驱动适配
2
STM32H7R7运行CherryUSB
3
RT-Smart首次线下培训,锁定2024 RT-Thread开发者大会!
4
使用RC522软件包驱动FM1722
5
常量数据类型和表达式陷阱分享
热门标签
RT-Thread Studio
串口
Env
LWIP
SPI
AT
Bootloader
Hardfault
CAN总线
FinSH
ART-Pi
USB
DMA
文件系统
RT-Thread
SCons
RT-Thread Nano
线程
MQTT
STM32
RTC
FAL
rt-smart
ESP8266
I2C_IIC
UART
WIZnet_W5500
ota在线升级
freemodbus
PWM
flash
cubemx
packages_软件包
BSP
潘多拉开发板_Pandora
定时器
ADC
flashDB
GD32
socket
中断
编译报错
Debug
SFUD
rt_mq_消息队列_msg_queue
msh
keil_MDK
ulog
C++_cpp
MicroPython
本月问答贡献
a1012112796
10
个答案
1
次被采纳
踩姑娘的小蘑菇
4
个答案
1
次被采纳
红枫
4
个答案
1
次被采纳
张世争
4
个答案
1
次被采纳
Ryan_CW
4
个答案
1
次被采纳
本月文章贡献
catcatbing
3
篇文章
5
次点赞
YZRD
2
篇文章
5
次点赞
qq1078249029
2
篇文章
2
次点赞
xnosky
2
篇文章
1
次点赞
Woshizhapuren
1
篇文章
5
次点赞
回到
顶部
发布
问题
分享
好友
手机
浏览
扫码手机浏览
投诉
建议
回到
底部