我正在转移到 Windows 计算机,需要运行我在 Linux 上编写的 Makefile 来创建一个库。
HEADER=/usr/include
INCLUDEDIR=include
LIB_NAME=libpce.so
SO_NAME=$(LIB_NAME).3.2
REAL_NAME=$(SO_NAME).5
SHARED_LIB=bin/$(REAL_NAME)
mkdir $(HEADER)/libpce
cp $(INCLUDEDIR)/pce.h $(HEADER)/libpce
chmod 644 $(HEADER)/libpce/pce.h
cp $(SHARED_LIB) /usr/lib/
ln -f -s $(SO_NAME) /usr/lib/$(LIB_NAME)
chmod 644 /usr/lib/$(REAL_NAME)
ldconfig
通过 Windows 上的 cygwin 终端运行它的输出给出了一个错误,因为未定义 ldconfig,所以我尝试在最后没有 ldconfig 命令的情况下运行它们。
然后,当我需要运行我的其他 Makefile 以使用参数 -lpce 编译我的代码时,它说 -lpce 未定义。我觉得 ldconfig 是必不可少的,但我无法在 Windows 上运行它。
有什么办法可以在 Windows 上执行这个命令吗?这是问题所在,还是可能是/usr/lib/路径的问题?
最佳答案
您的 makefile 充满了特定于 Linux 的命令和路径。他们不翻译 1:1。也许您可以解决这个问题,但真正的解决方案不是手写您的 makefile。使用像 cmake 这样的构建系统,无论您使用什么系统,它都会为您生成必要的构建文件。
您也没有提及您在 Windows 机器上设置了什么。默认情况下,Windows 不具备编译 C++ 代码的能力。你必须安装一些东西,无论是 MS Build Tools , WSL , MinGW/MSYS2 , 或 Cygwin .
尽管仔细观察,您的 makefile 片段只不过是一个 bash 脚本。如果您最终停留在 100% 的 Windows 环境中,那可能会被转换为 PowerShell 脚本。
关于c++ - 在 Windows 上运行 Linux Makefile(.so 文件),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58342536/