c++ - 在 Windows 上运行 Linux Makefile(.so 文件)

标签 c++ linux windows makefile ld

我正在转移到 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/

相关文章:

C++ 服务器程序 Print While Loop

linux - 适用于 Linux 的 AMD 兼容汇编程序

linux - 不安全字符串处理函数的完整列表及其更安全的 linux 替代品

c++ - 设置 Windows 计时器,访问被拒绝

c++ - 当用字符串文字实例化时,模板 T & 参数到底是什么?

c++ - 如何将文件写入 OS X 应用程序资源文件夹?

C++无法根据STL容器类型进行流控

java - 在 centOS Linux Box 中运行的 Spring Java Mail 程序抛出异常

java - Dockererized Kong 在 Windows 上给出 "An invalid response was received from the upstream server"

ruby-on-rails - 在 Windows Vista 上发出任何 Rails 命令时出现延迟