我在NIOS II系统上移植Arduino框架,根据配置(普通/小C库),可能有not have atof()
功能。当然,使用String::toDouble()
实现的atof()
也不一定存在。但是,我仍然想让普通C库的用户可以使用它。期望的行为:
String::toDouble()
- 框架应该编译String::toDouble()
- 框架应失败进行编译String::toDouble()
- 框架应该编译String::toDouble()
- 框架应该编译我怎么能实现这个?普通/小C库之间的选择是作为链接器的命令行选项实现的,据我所知,在编译时,应用程序没有可用的宏定义。
目前的NIOS工具链基于GCC 5.3.0,但旧设备只支持基于GCC 4.7.3的旧工具链。我更希望找到一种适合两者的解决方案。
答案 0 :(得分:1)
我怎么能实现这个?
您可以尝试使用-ffunction-sections
构建并与--gc-sections
建立链接。
String::toDouble()
应放在输出文件中自己的部分中,然后如果实际上没有使用,则由链接器进行垃圾收集。见ld documentation:
- GC-部分
启用未使用输入节的垃圾回收。
-ffunction截面
将每个函数或数据项放入输出中的自己的部分 文件,如果目标支持任意部分。