我正在将libtomcrypt编译为arm(使用arm-none-eabi-gcc)作为库并尝试使用它,但数学库出现问题。具体来说,当我尝试在运行PDF文件中的RSA代码时尝试编译文件时,它指出:MyTask.c:406
:未定义对`ltm_desc'的引用。
libtomcrypt和libtommath正在linux子系统上编译为Windows ubuntu。我在编译libtomcrypt时添加了-DUSE_LTM和-DLTM_DESC标志,并添加了-I / usr / local / include,由于某种原因,它找不到tommath标头。完整的make命令为:make install CFLAGS="-DUSE_LTM -DLTM_DESC -I/usr/local/include"
。 libtommath make install执行没有错误。
在Windows环境中使用相同的编译器和编译器标志制作主程序(出于遗留原因)。我的CFLAGS是CFLAGS = C_FLAGS = -mcpu=cortex-m0plus -mthumb -mlittle-endian -mthumb -Wall -Wstrict-prototypes -fmessage-length=0 -fsigned-char -ffunction-sections -fdata-sections -L../cryptom/ -DLTM_DESC -DUSE_LTM
cryptom是我放置libtommath和libtomcrypt的库文件的位置。
点击链接器时发生错误。这是相关行:
uTaskerV1.4.elf: $(OBJS) $(OBJS2) K_2M_256.ld K_1M_256.ld K_1M_128.ld K_512_64.ld K_256_256.ld K_256_64.ld K_256_32.ld K_128_24.ld K_128_16.ld K_64_16.ld KL_128_96.ld KL_256_32.ld KL_128_16.ld KL_64_8.ld KL_32_4.ld KV_32_8.ld KV_512_96.ld KE_64_4.ld KE_256_32.ld KE_128_16.ld KE_8_1.ld KEA_128_16.ld KEA_64_4.ld KEA_32_4.ld KEA_8_1.ld
$(CC_LNK) $(C_FLAGS) -Os -g -TKL_128_96.ld -nostartfiles -Xlinker --gc-sections -lm -Wl,-Map,"uTaskerV1.4.map" -o "uTaskerV1.4.elf" $(OBJS) $(OBJS2) -ltommath -ltomcrypt -specs=nano.specs -specs=nosys.specs
$(CC_OBJ) --only-section=.data --only-section=.init --only-section=.text --only-section=.rodata --only-section=.vectors --only-section=.f_config --output-target=srec uTaskerV1.4.elf uTaskerV1.4.srec
$(CC_OBJ) --only-section=.data --only-section=.init --only-section=.text --only-section=.rodata --only-section=.vectors --only-section=.f_config --output-target=ihex uTaskerV1.4.elf uTaskerV1.4.hex
$(CC_OBJ) --only-section=.data --only-section=.init --only-section=.text --only-section=.rodata --only-section=.vectors --only-section=.f_config --output-target=binary uTaskerV1.4.elf uTaskerV1.4.bin
$(CC_SIZE) uTaskerV1.4.elf
使用代码段的非数学库运行良好。我尝试在自己的程序中手动定义LTM_DESC,但除了抛出很多重定义错误外,没有其他问题。
版本 linux arm-gcc gcc版本6.3.1 20170620(15:6.3.1 + svn253039-1build1) Windows arm-gcc gcc版本7.3.1 20180622(发行版)[ARM / embedded-7-branch版本261907](用于Arm嵌入式处理器的GNU工具7-2018-q2-update)
谢谢