2016-07-20 32 views
0

我使用Visual Studio與VisualGDB,我有大約2000個.c文件 visualgdb提供了一些模板生成文件。問題是,如果有太多的文件,我得到這個窗口10限制錯誤(命令太長)如何修改mingw使用的make文件,以便鏈接器輸入是包含對象的文件?

process_begin: CreateProcess(C:\SysGCC\mingw32\bin\g++.exe, C:/SysGCC/mingw32/bin/g++.exe -o Debug/WindowsProject2.exe -Wl,-gc-sections -Wl,--start-group Debug/Source.o Debug/thisIsAveryLongFilenameYesSir0.o Debug/thisIsAveryLongFilenameYesSir1.o Debug/thisIsAveryLongFilenameYesSir10.o Debug/thisIsAveryLongFilenameYesSir100.o Debug/thisIsAveryLongFilenameYesSir998.o 
....many files ... 
Debug/thisIsAveryLongFilenameYesSir999.o -Wl,--end-group 
1> Makefile:137: recipe for target 'Debug/WindowsProject2.exe' failed 
1> ------------------------------------------------------------- 
1> Command exited with code 2 
1> Executable: cmd.exe 
1> Arguments: /c "C:\SysGCC\mingw32\bin\mingw32-make.exe" -j8 CONFIG=Debug 
1> Directory: C:\Users\timo\Desktop\Study\Embedded\STM32\VisualGDB\WindowsProject2\WindowsProject2 
1>VisualGDB : error : Command-line action failed 

我發現從visualGDB

ifeq ($(TARGETTYPE),SHARED) 
$(BINARYDIR)/$(TARGETNAME): $(all_objs) $(EXTERNAL_LIBS) 
    $(LD) -shared -o [email protected] $(LDFLAGS) $(START_GROUP) $(all_objs) $(LIBRARY_LDFLAGS) $(END_GROUP) 
endif 

產生的make文件templae的make命令和支持給我發了2個變種誰不工作:

1.

ifeq ($(TARGETTYPE),APP) 
$(BINARYDIR)/$(TARGETNAME): $(all_objs) $(EXTERNAL_LIBS) 
@echo $(all_objs) > [email protected] 
$(LD) -o [email protected] $(LDFLAGS) $(START_GROUP) @[email protected] $(LIBRARY_LDFLAGS) $(END_GROUP) 
endif 

2 。

ifeq ($(TARGETTYPE),APP) 
$(BINARYDIR)/$(TARGETNAME): $(all_objs) $(EXTERNAL_LIBS) 
<TAB>@echo -g > [email protected] 
<TAB>$(foreach obj,$(all_objs),cmd /c 「echo $(obj) >> [email protected]」) 
<TAB> $(LD) -o [email protected] $(LDFLAGS) $(START_GROUP) @[email protected] $(LIBRARY_LDFLAGS) $(END_GROUP) 
endif 

變體1上有17_01_Dev.exe.in其中包含的對象,如列表

調試/ file2.o調試/ file1.o ...

但它僅限於aprox的8190字符,然後它削減了所有的其他對象

請幫助:(

回答

相關問題