Makefile在通过./configure--host=mingw32后生成时崩溃

Makefile在通过./configure--host=mingw32后生成时崩溃,c,macos,gcc,makefile,mingw32,C,Macos,Gcc,Makefile,Mingw32,大家:情况:MacOS和x86_64-w64-mingw32编译工具链我试图从GDB的源代码编译适用于Windows的GDB。但是,之后,我 /bin/sh ./libtool --tag=CC --mode=link x86_64-w64-mingw32-gcc -W -Wall -Wstrict-prototypes -Wmissing-prototypes -Wshadow -Wstack-usage=262144 -Wno-format -I./../zlib -Iincluded

大家:情况:MacOS和x86_64-w64-mingw32编译工具链我试图从GDB的源代码编译适用于Windows的GDB。但是,之后,我

/bin/sh ./libtool  --tag=CC   --mode=link x86_64-w64-mingw32-gcc -W -Wall -Wstrict-prototypes -Wmissing-prototypes -Wshadow -Wstack-usage=262144 -Wno-format -I./../zlib -Iincludedir -D__USE_MINGW_ACCESS  -release `cat libtool-soversion`  -Llibdir -Wl,--stack,12582912 -o libbfd.la -rpath /usr/local/lib archive.lo archures.lo bfd.lo bfdio.lo bfdwin.lo cache.lo coff-bfd.lo compress.lo corefile.lo elf-properties.lo format.lo hash.lo init.lo libbfd.lo linker.lo merge.lo opncls.lo reloc.lo section.lo simple.lo stab-syms.lo stabs.lo syms.lo targets.lo binary.lo ihex.lo srec.lo tekhex.lo verilog.lo `cat ofiles`   -L./../zlib -lz 
./libtool: line 5208: cd: libdir: No such file or directory
libtool: link: cannot determine absolute directory name of `libdir'
make[4]: *** [libbfd.la] Error 1
make[3]: *** [all-recursive] Error 1
make[2]: *** [all] Error 2
make[1]: *** [all-bfd] Error 2
我相信我的MingW32是完全建成和能力

x86_64-w64-mingw32-addr2line   x86_64-w64-mingw32-dllwrap     x86_64-w64-mingw32-gcc-ranlib  x86_64-w64-mingw32-ld.bfd      x86_64-w64-mingw32-size
x86_64-w64-mingw32-ar          x86_64-w64-mingw32-elfedit     x86_64-w64-mingw32-gcov        x86_64-w64-mingw32-lto-dump    x86_64-w64-mingw32-strings
x86_64-w64-mingw32-as          x86_64-w64-mingw32-g++         x86_64-w64-mingw32-gcov-dump   x86_64-w64-mingw32-nm          x86_64-w64-mingw32-strip
x86_64-w64-mingw32-c++         x86_64-w64-mingw32-gcc         x86_64-w64-mingw32-gcov-tool   x86_64-w64-mingw32-objcopy     x86_64-w64-mingw32-windmc
x86_64-w64-mingw32-c++filt     x86_64-w64-mingw32-gcc-10.2.0  x86_64-w64-mingw32-gfortran    x86_64-w64-mingw32-objdump     x86_64-w64-mingw32-windres
x86_64-w64-mingw32-cpp         x86_64-w64-mingw32-gcc-ar      x86_64-w64-mingw32-gprof       x86_64-w64-mingw32-ranlib      
x86_64-w64-mingw32-dlltool     x86_64-w64-mingw32-gcc-nm      x86_64-w64-mingw32-ld          x86_64-w64-mingw32-readelf   
我通过自制软件安装它,这是我的Makefile中libdir的配置

prefix = /usr/local
exec_prefix = ${prefix}
libdir = ${exec_prefix}/lib
LDFLAGS = -Llibdir
...
    "libdir=$(libdir)" \
...
我完全不知道如何解决这个问题。有什么想法吗?或者如果你需要更多的信息来解决这个问题,请告诉我

只要下载GDB的源代码,我想你可以复制同样的场景

./libtool: line 5208: cd: libdir: No such file or directory
libtool: link: cannot determine absolute directory name of `libdir'
make[4]: *** [libbfd.la] Error 1
make[3]: *** [all-recursive] Error 1
make[2]: *** [all] Error 2
make[1]: *** [all-bfd] Error 2
make: *** [all] Error 2

正如命令行和错误消息所说,您给libtool的路径不正确

命令行包含
-Llibdir
,错误消息显示“无法确定'libdir'的绝对目录名”

因此,您编写Makefile是为了按字面意思使用
libdir
,而不是像它应该的那样使用变量。将其更改为:

LDFLAGS = -L$(libdir)

括号和大括号之间没有真正的区别,只是不要混淆它们。有用的链接包括: 和

是否检查目录
libdir
是否存在?错误消息很清楚:工具
libtool
找不到它。-顺便说一句,不是Makefile崩溃,实际上没有程序崩溃。正是程序
libtool
优雅而正确地退出并显示错误消息,程序
make
将此消息转发给您并正确地停止进程。“请把你的措词说得准确些。”他们好管闲事,是的,我说了。libtool由make命令提供/生成。libdir只是一个由Makefile定义的环境变量。正如命令行和错误消息所说,您给出的
libtool
路径不正确。命令行包含
-Llibdir
,错误消息显示“无法确定'libdir'的绝对目录名”。如果更正Makefile并写入
LDFLAGS=-L${libdir}
,会发生什么?(或者,我会用“make”:
LDFLAGS=-L$(libdir)
用括号代替大括号。)@busybee我知道,我不认为应该是-L$(libdir),因为libdir只是一条简单的路径。我不认为它会起作用,但无论如何,我会尝试一下${}。@thebusybee-OMG,我想你说到点子上了!错误的就-L${}的严格含义而言,它应该是-L${},但使用-L$()可能仍然有效,但它应该是-L${}@Edee。请检查编辑是否使您平静下来。请详细说明你所说的“严格意义”是什么意思。严格意义意味着${}和$()之间有明显的区别,没有真正的区别真正取决于误用情况,在大多数情况下,$()将像${}一样工作,但并不意味着它们在任何情况下都可以相同地工作。
LDFLAGS = -L${libdir}