【问题标题】:wxWidgets library build garbled file name in linkerwxWidgets 库在链接器中构建乱码文件名
【发布时间】:2017-01-05 21:05:58
【问题描述】:

在尝试构建 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 时遗漏了一个字母。这可能吗?

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

所以正确的命令是去链接器,但链接器正在寻找一个乱码的文件名!

这是我正在做的事情的完整秘诀:

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

【问题讨论】:

  • 不幸的是,红线覆盖了文件名。可以重新截图吗?
  • @Igor 看看红线上方。

标签: wxwidgets


【解决方案1】:

这似乎与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

【讨论】:

  • 我已在您的仅链接答案中添加了详细信息。为什么没有对 wxwidgets master 进行这种更改?会为我节省几个小时!
  • 这些 makefile 是由无法自行生成通配符的工具生成的。此外,使用通配符可能是错误的,我们有我们想要链接的文件的完整列表,我们应该能够使用它们——如果不是因为这个错误......
  • 如何更新 wiki 以便更容易找到此修复?而不是“解决问题“输入行太长””有“解决问题“没有这样的文件或目录””
  • 当然,请这样做。
猜你喜欢
  • 2010-10-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-08-17
相关资源
最近更新 更多