我已经能够在IAR EWARM(7.40)(用于ST STM32F407IG ARM Cortex-m4)中构建代码,该代码通过gcc(4.9.3)链接到在Ubuntu下构建的库。这个主要是可以工作,但是IAR或gcc端中的一个或两个上的一些构建环境调整仍然存在。我很感激你能给我指点任何帮助。
没有明显的构建错误,但EWARM和arm-none-eabi-gcc对传递给gcc构建库的参数的位置不一致。 EWARM调试器和EWARM生成的代码彼此一致但是(到目前为止调查),gcc生成的代码所期望的位置与EWARM预期的位置相差8个字节。我只调查了一个电话,所以这可能不是一成不变的......
IAR的编译器标志包括: - aeabi和--guard_calls按照章节:“AEABI合规性”在EWARM帮助部分中。 arm-none-eabi-gcc编译器标志包括:-gdwarf-3 -mabi = aapcs -march = armv7e-m -mthumb。
我相信这告诉EWARM和gcc与ARM AAPCS标准过程调用和dwarf v3格式一起玩得很好。
EWARM似乎对-gdwarf-2或-gdwarf-3(但不是-4)感到满意。此选择似乎不会影响上面讨论的问题。
还需要什么?
答案 0 :(得分:0)
答案“还需要什么?”似乎什么都不是。只是要确保#ifdef语句评估的所有宏都在环境中匹配,这样你就不会在两个不同的环境中得到不同大小的数据结构! #ifdef代码是头文件应该仔细评估...