使用 Makefile 在 Git Bash shell 中创建共享库失败

Creating shared library fails in Git Bash shell using Makefile

我正在尝试在 Windows 10 中使用 Git Bash shell 从 C++ 代码创建共享库,即 .so。 我使用 Makefile 在 Windows 10 中编译 C++ 代码。运行 通过 Git bash shell 进行编译。 代码编译没有任何问题,创建目标文件也没有失败。 但是它在创建 .so 文件时失败并抛出以下错误。以下是目标 VLIB_SHARED_LIBRARY 导致此错误的 Makefile 的一部分。

VLIB_SO_DIR = .
VLIB_SHARED_LIBRARY = $(VLIB_SO_DIR)/libvxxx.so
CXX = g++

CXXFLAGS = -Wall -std=c++11 -O2 -D_7ZIP_ST -fPIC
LDFLAGS = -shared

OBJECT_FILES = a.o b.o c.o d.o .. z.o

all: init $(VLIB_SHARED_LIBRARY )

release: init $(VLIB_SHARED_LIBRARY )

$(VLIB_SHARED_LIBRARY): $(OBJECT_FILES) \n
        $(CXX) $(LDFLAGS) -o $(VLIB_SHARED_LIBRARY) $(OBJECT_DIR)/*.o

process_begin: CreateProcess(C:\Program, C:/Program Files/Git/usr/bin/sh.exe -c "g++ -shared -o C:/XXXX_YYYY/bbbb/bin_linux/libyyyy.so C:/XXXX_YYYY/bbbb/bin_linux/obj/*.o", ...) failed.
make (e=193): Error 193

相同的 Makefile 在实际 Linux Ubuntu OS 中工作正常,但在 Windows 10 中失败。 如何修复此错误?

我在上面的评论中建议白色space 问题的原因是错误消息清楚地表明这是一个白色space 问题:

CreateProcess(C:\Program, C:/Program Files/Git/usr/bin/sh.exe ...

在通往 sh.exe 的路径中有一个 space,此处打印的第一个参数 C:\Program 非常清楚地表明路径已在 space 处被截断.

我想也许您的 makefile 正在将 SHELL 设置为某个值,但它似乎没有。我所能建议的是 (a) 从您的 %Path% 中删除 C:\Program Files\Git\usr\bin,或者 (b) 将 Git 重新安装到不包含 whitespace 的路径中你没有遇到这个问题。