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字符,然後它削減了所有的其他對象
請幫助:(