【问题标题】:Cross Compiling with Cmake. What should I expect from cross compiling使用 Cmake 进行交叉编译。我应该从交叉编译中得到什么
【发布时间】:2022-07-04 23:42:31
【问题描述】:

我还希望我为 Linux 开发的代码可以在 Windows 上运行。我为此编写了简单的 Hello world 代码。我能够使用 Cmake 使用 minGW 创建 .exe 文件。当我直接在 Windows 上运行 .exe 文件时,我收到错误“libstdc++-6.dll not found”,即使它存在于我的计算机上。当我在 Windows 中删除 /build 文件夹的内容并使用 Cmake 构建它时,新创建的 .exe 文件起作用了。当我不使用 Cmake 直接使用 minGW 编译时,.exe 工作没有问题。 将带有源代码的 .exe 文件传输到 Windows 环境并期望它直接工作是错误的吗?我想正确理解这个概念的逻辑。

【问题讨论】:

  • Windows,我收到错误“libstdc++-6.dll not found”,即使它存在于我的计算机上。是用户错误。你必须告诉你的操作系统在哪里寻找 dll。

标签: c++ cmake cross-compiling


【解决方案1】:

如果您使用不属于 Windows 本身的库,则通常需要将这些库的 DLL 分发到与 EXE 相同的目录中,以便您的 EXE 在另一台计算机上运行。

另外,许多交叉编译器支持-static 参数,您可以在链接时传递该参数,以便将这些库静态链接到您的可执行文件中。我赞成这种方法,但它的许可要求更严格。

(请确保遵守您重新分发的任何非您自己、开源或其他方式的软件的许可条款。)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-05-08
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多