【问题标题】:Compile C++ code under windows for linux, as ready to run在windows for linux下编译C++代码,准备运行
【发布时间】:2012-05-14 19:07:54
【问题描述】:

我对 linux 的编译代码很陌生。它可能是 Debian 5.0。我需要为它编译我的 cpp 代码以使其准备好运行,我的意思是其他人只需点击它就可以像在 Windows 中一样轻松运行程序。

有人可以帮忙吗?

【问题讨论】:

  • 我强烈建议您只设置一个在 Windows 下运行的 Linux VM。例如,VMWare Player 是免费下载;您还可以通过VMWare "appliance" 下载许多版本的 Linux
  • 好的,我有一个 ubuntu,但是如果我在 ubuntu 下编译我的代码,它可以在 Debian 5.0 下工作吗?
  • @KamilKrzyszczuk 最好的办法是使用您认为可支持的最古老的 Linux 发行版并使用它进行编译。这将保证最大的兼容性(静态链接到依赖项将有很大帮助,因此发行版之间的名称差异很大)

标签: c++ windows linux cygwin


【解决方案1】:

我为此使用了 virtualbox。这很容易和方便。只要您拥有适当的许可证,您就可以运行多个 Linux 发行版和多个版本的 Windows。您还可以在每个虚拟机上运行 subversion 等,以便在构建时同步所有虚拟机的更改。

【讨论】:

    【解决方案2】:

    假设您希望能够在 Windows 上编译某些东西并让它在任何 Linux 机器上运行,那根本不可能。 Debian 和 Ubuntu 都支持许多架构,其中许多完全没有二进制兼容性。如果您知道您的朋友拥有什么类型的硬件,您可以构建一个针对该架构的二进制文件。

    如果你想要一个快速而肮脏的答案,你可以为 i386 构建,因为 64 位机器可能仍然可以正常运行(虽然不能保证)。

    【讨论】:

    • 事实上,在一个 Linux 上构建的简单程序很可能在不同的 Linux 上运行。特别是如果不涉及 GUI 依赖项。恕我直言...
    • 我在 x86_64 Linux 机器上进行所有开发(个人和工作);所有编译后的代码都不能在 ARM 芯片上的嵌入式 Linux 环境中运行。
    【解决方案3】:

    编译后,您可以轻松地在桌面上创建一个快捷方式 - 或在菜单上添加一个条目 - 以通过脚本启动您的程序;类似:

    #!/bin/bash
    /path/to/your/progam
    

    将其保存为launch.sh - 例如- 并为其赋予 ugo+x 权限

    chmod ugo+x launch.sh 
    

    当您创建快捷方式时,您可以将图标与您的脚本关联起来,就像在 Windows 中一样。

    更新

    如果您将编译后的程序发送给您的朋友(假设通过电子邮件)。您可以简单地指示您的朋友在他下载文件的同一目录中启动终端窗口并运行以下命令:

    chmod ugo+x your_program
    ./your_program
    

    或者您可以向他发送 2 个文件:一个带有您的程序,另一个带有我上面描述的“启动”脚本。由于这两个文件将被下载到同一个目录,您可以将启动脚本更改为:

    #!/bin/bash
    ./your_program
    

    当他点击launch.sh时,你的程序就会被执行。

    【讨论】:

    • 我想我不需要捷径。我会把这个程序发给我的朋友,我需要确保他可以轻松运行它。
    • 你没有在你的问题上解释清楚。将更新我的答案。
    • 但是如果我在 Ubuntu 下编译代码,它会在任何其他 Linux 发行版下工作吗?例如 Debian?
    • @KamilKrzyszczuk 你的程序是做什么的?它是静态链接的还是动态链接的?是否会在相同的架构中执行?它依赖于哪些第三方库?这些库(假设您的程序是动态链接的)是否可以在目标 Linux 发行版中使用?
    • 我的程序使用 C 的 mysql 库,但程序是 C++。这是 mysql 库的链接:mysql.com/downloads/connector/c/#downloads - 仅此而已。嗯,我不太了解 IT 机器的架构,但这只是 dedserver。并且程序可能是动态链接的。
    猜你喜欢
    • 2020-04-02
    • 1970-01-01
    • 2012-05-11
    • 2023-04-08
    • 1970-01-01
    • 2016-10-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多