2017-07-28 94 views
0

我有一個項目,我試圖建立我的新STM32F7核蛋白板出現問題在Eclipse臂無 - EABI鏈接。我新安裝了GNU ARM Embedded toolchain,STM32CubeF7GNU MCU Eclipse Plugin,我用它在我的Windows 7機器上設置了一個新的項目。我以前在我的Ubuntu筆記本電腦上做過這些,沒有問題。 設置完項目後,我添加了HAL和CMSIS庫,並使用了STM32CubeF7的模板項目。到目前爲止,彙編工作正常,但連接時,我得到以下錯誤:問題使用GNU MCU Eclipse插件

c:/program files (x86)/gnu tools arm embedded/5.4 2016q2/bin/../lib/gcc/arm-none-eabi/5.4.1/../../../../arm-none-eabi/bin/ld.exe: cannot find -lc_p-lc_p 

據我瞭解這裏的問題是,一些庫一個很奇怪的名字不能被發現。不幸的是,唯一的page that I found where the same error is described是在俄羅斯,我根本不說話。

乍一看,對我來說,它看起來像生成的makefile文件已損壞,和被稱爲C_P庫正試圖鏈接,但兩者之間沒有空間做兩次。所以這可能是Eclipse或Eclipse GNU MCU插件的問題。

事情,我試圖擺脫錯誤的:

  • 更新的Eclipse
  • 降級到幾個老版本的GNU ARM的嵌入式工具鏈的
  • 關閉/打開以下鏈接器選項:
    • --specs=nano.specs
    • -nodefaultlibs
    • -nostdlib
  • 安裝文件夾中的工具鏈沒有任何空格

下面是自動生成的Makefile:

################################################################################ 
# Automatically-generated file. Do not edit! 
################################################################################ 

-include ../makefile.init 

RM := rm -rf 

# All of the sources participating in the build are defined here 
-include sources.mk 
-include system/src/subdir.mk 
-include system/HAL/Src/subdir.mk 
-include system/subdir.mk 
-include src/subdir.mk 
-include subdir.mk 
-include objects.mk 

ifneq ($(MAKECMDGOALS),clean) 
ifneq ($(strip $(CC_DEPS)),) 
-include $(CC_DEPS) 
endif 
ifneq ($(strip $(C++_DEPS)),) 
-include $(C++_DEPS) 
endif 
ifneq ($(strip $(C_UPPER_DEPS)),) 
-include $(C_UPPER_DEPS) 
endif 
ifneq ($(strip $(CXX_DEPS)),) 
-include $(CXX_DEPS) 
endif 
ifneq ($(strip $(ASM_DEPS)),) 
-include $(ASM_DEPS) 
endif 
ifneq ($(strip $(S_UPPER_DEPS)),) 
-include $(S_UPPER_DEPS) 
endif 
ifneq ($(strip $(C_DEPS)),) 
-include $(C_DEPS) 
endif 
ifneq ($(strip $(CPP_DEPS)),) 
-include $(CPP_DEPS) 
endif 
endif 

-include ../makefile.defs 

# Add inputs and outputs from these tool invocations to the build variables 
SECONDARY_FLASH += \ 
stm32Template.hex \ 

SECONDARY_SIZE += \ 
stm32Template.siz \ 


# All Target 
all: stm32Template.elf secondary-outputs 

# Tool invocations 
stm32Template.elf: $(OBJS) $(USER_OBJS) 
    @echo 'Building target: [email protected]' 
    @echo 'Invoking: GNU ARM Cross C++ Linker' 
    arm-none-eabi-g++ -mcpu=cortex-m7 -mthumb -mfloat-abi=soft -O0 -fmessage-length=0 -fsigned-char -ffunction-sections -fdata-sections -ffreestanding -fno-move-loop-invariants -Wall -Wextra -g3 -p -pg -T mem.ld -T libs.ld -T sections.ld -nostartfiles -L"../ldscripts" -Wl,-Map,"stm32Template.map" --specs=nano.specs -o "stm32Template.elf" $(OBJS) $(USER_OBJS) $(LIBS) 
    @echo 'Finished building target: [email protected]' 
    @echo ' ' 

stm32Template.hex: stm32Template.elf 
    @echo 'Invoking: GNU ARM Cross Create Flash Image' 
    arm-none-eabi-objcopy -O ihex "stm32Template.elf" "stm32Template.hex" 
    @echo 'Finished building: [email protected]' 
    @echo ' ' 

stm32Template.siz: stm32Template.elf 
    @echo 'Invoking: GNU ARM Cross Print Size' 
    arm-none-eabi-size --format=berkeley "stm32Template.elf" 
    @echo 'Finished building: [email protected]' 
    @echo ' ' 

# Other Targets 
clean: 
    -$(RM) $(CC_DEPS)$(C++_DEPS)$(OBJS)$(C_UPPER_DEPS)$(CXX_DEPS)$(SECONDARY_FLASH)$(SECONDARY_SIZE)$(ASM_DEPS)$(S_UPPER_DEPS)$(C_DEPS)$(CPP_DEPS) stm32Template.elf 
    [email protected] ' ' 

secondary-outputs: $(SECONDARY_FLASH) $(SECONDARY_SIZE) 

.PHONY: all clean dependents 

-include ../makefile.targets 

沒有任何人有任何這方面的投入給我嗎?

編輯: GNU MCU Eclipse插件爲新項目提供了一個模板,即使這樣我也會得到相同的錯誤。

回答

0

過了一段時間,我想出瞭如何解決這個問題,但不幸的是我還沒有發現究竟是什麼原因造成的。我搜索了我的GNU ARM Embedded toolchain安裝文件夾,但未找到包含c_p的任何庫名稱。我認爲導致這個問題的原因必須在於定義鏈接器默認庫的地方,這就是爲什麼我認爲問題在於工具鏈本身。

但是,我選擇禁用默認庫(-nodefaultlibs標誌)並將它們自己鏈接起來。我聯繫以下庫:

-lg -lstdc++ -lgcc -lm -lrdimon -lc

如果有人可以幫我找到這個問題,將不勝感激的實際根源。 但是,既然解決了我的問題,我就要關閉這個問題。

0

你讓一個非常重要的錯誤。您嘗試使用DIY Eclipse配置導入爲特定環境創建的項目。

安裝OpenSTM32。 使用SW4STM32工具鏈設置生成您的項目。

導入該項目。編譯,鏈接和調試

如果您發現已安裝的工具鏈已過時,您將能夠替換它。

+0

我沒有導入任何設置,我只是複製源文件,以便我可以自己設置和配置項目。我在家裏做了這個,並且在另一個項目上工作 - 但在Linux上。問題是我想繼續使用Eclipse,就像我一直在做的那麼多年。我想知道爲什麼會發生這種情況,以便我知道問題出在哪裏,無論是工具鏈還是IDE。 –

+0

好的。不好意思,朋友。 –

+0

不用擔心,謝謝你試圖幫助:)我剛剛更新了我的問題,當我創建一個乾淨的新項目並嘗試編譯它時發生同樣的錯誤。該項目來自GNU MCU Eclipse插件提供的模板,所以它不能因爲我將文件複製到項目中。我擔心它與工具鏈有關...... –