wxWidgets库在链接器中构建乱码文件名

时间:2017-01-05 21:05:58

标签: wxwidgets

在尝试构建wxWidgets 3.1.0库时,我收到此错误

ar: gcc_mswu\moolib_fontmap.o: No such file or directory

存在拼写略有不同的文件

 Directory of C:\Users\James\code\wxwidgets-3.1.0\build\msw\gcc_mswu

2017-01-05  02:01 PM            98,886 monolib_fontmap.o

它看起来像是makefile中的拼写错误,或者像读取makefile时错过了一封信。这可能吗?

除外:如果我将控制台输出重定向到文件并在编辑器中打开,则会显示正确的拼写:

enter image description here

因此,正确的命令将转到链接器,但链接器正在寻找乱码文件名!

以下是我正在做的事情的完整配方:

Download wxWidgets source code from https://github.com/wxWidgets/wxWidgets/releases/download/v3.1.0/wxWidgets-3.1.0.7z

Unpack to a folder. On my system, I use C:\Users\James\code\wxwidgets-3.1.0

Open a command window.

cd to the code::blocks mingw folder. On my system this is C:\Program Files (x86)\CodeBlocks16\MinGW

Type mingwvars.bat

cd to wxwidgets folder. On my system C:\Users\James\code\wxwidgets-3.1.0

cd to ./build/msw

Type mingw32-make SHELL=CMD.exe -j4 -f makefile.gcc BUILD=release UNICODE=1 SHARED=0 MONOLITHIC=1

1 个答案:

答案 0 :(得分:2)

这似乎与提到in the wiki的问题相同。显然mingw32-make中有一个很长的命令行的错误,这使得它(有时会?)在其中吃掉字符......

是。在您发布的链接中应用配方解决了问题。以下是详细信息:

修改makefile.gcc如下:

自:

ifeq ($(MONOLITHIC),1)
ifeq ($(SHARED),0)
$(LIBDIRNAME)\libwx$(PORTNAME)$(WXUNIVNAME)$(WX_RELEASE_NODOT)$(WXUNICODEFLAG)$(WXDEBUGFLAG)$(WX_LIB_FLAVOUR).a: $(MONOLIB_OBJECTS)
    if exist $@ del $@
    ar rcu $@ $(MONOLIB_OBJECTS)
    ranlib $@
endif
endif

用gcc_mswu \ monolib * .o替换$(MONOLIB_OBJECTS)的第二次出现:

ifeq ($(MONOLITHIC),1)
ifeq ($(SHARED),0)
$(LIBDIRNAME)\libwx$(PORTNAME)$(WXUNIVNAME)$(WX_RELEASE_NODOT)$(WXUNICODEFLAG)$(WXDEBUGFLAG)$(WX_LIB_FLAVOUR).a: $(MONOLIB_OBJECTS)
    if exist $@ del $@
    ar rcu $@ gcc_mswu\\monolib*.o
    ranlib $@
endif
endif