Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/159.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何为cpp程序构建可执行文件 我在Ubuntu工作,编写普通C++程序。 使用gcc编译程序。_C++_Gcc - Fatal编程技术网

如何为cpp程序构建可执行文件 我在Ubuntu工作,编写普通C++程序。 使用gcc编译程序。

如何为cpp程序构建可执行文件 我在Ubuntu工作,编写普通C++程序。 使用gcc编译程序。,c++,gcc,C++,Gcc,我想将我的程序作为应用程序分发。当我双击.out文件时。它在我的电脑上可用,但在其他(Linux)电脑上不可用 我的问题是: GCC需要在客户端PC上执行应用程序吗 如何为所有平台(Win、Linux、OSX)构建可执行文件 您正在尝试在Linux环境下编译Windows PE文件 如果是这样,您将需要mingW工具链接 请参见此处(但由于sourceforge.net上的mingw-w64项目正在迁移到mingw-w64.org,我建议您也检查一下)您正在尝试在Linux环境下编译Window

我想将我的程序作为应用程序分发。当我双击.out文件时。它在我的电脑上可用,但在其他(Linux)电脑上不可用

我的问题是:

  • GCC需要在客户端PC上执行应用程序吗

  • 如何为所有平台(Win、Linux、OSX)构建可执行文件


  • 您正在尝试在Linux环境下编译Windows PE文件

    如果是这样,您将需要mingW工具链接


    请参见此处(但由于sourceforge.net上的mingw-w64项目正在迁移到mingw-w64.org,我建议您也检查一下)

    您正在尝试在Linux环境下编译Windows PE文件

    如果是这样,您将需要mingW工具链接

    请参见此处(但由于sourceforge.net上的mingw-w64项目正在迁移到mingw-w64.org,我建议您也检查一下)

    回答#1。不需要。但是目标平台需要与应用程序期望的相同(或兼容)的动态库。如果有疑问,用静态链接编译它。它可以帮助您在不同的Linux发行版上运行相同的代码

    gcc-static-o您的文件test.cpp

    对#2的答复。有几种选择:

    • 编写可移植代码,并使用C编译器为您要部署到的每个平台进行编译。您将得到三个可执行文件:一个用于Linux,另一个用于Windows,另一个用于OSX

    • 发布源代码,让用户进行编译

    • 使用Java、Python、C#或任何其他不需要重新编译的语言在多个平台上运行

      • 回答第1条。不需要。但是目标平台需要与应用程序期望的相同(或兼容)的动态库。如果有疑问,用静态链接编译它。它可以帮助您在不同的Linux发行版上运行相同的代码

        gcc-static-o您的文件test.cpp

        对#2的答复。有几种选择:

        • 编写可移植代码,并使用C编译器为您要部署到的每个平台进行编译。您将得到三个可执行文件:一个用于Linux,另一个用于Windows,另一个用于OSX

        • 发布源代码,让用户进行编译

        • 使用Java、Python、C#或任何其他不需要重新编译的语言在多个平台上运行

        附加说明:

        < >使用<强> g++<强>编译C++源(<强> gcc是针对普通C,不包括C++标准库)。 如果您想使用<强> GCC (强烈劝阻),则将源文件链接到标准C++库。

        gcc source.cpp -lstdc++
        
        补充说明:

        < >使用<强> g++<强>编译C++源(<强> gcc是针对普通C,不包括C++标准库)。 如果您想使用<强> GCC (强烈劝阻),则将源文件链接到标准C++库。

        gcc source.cpp -lstdc++
        

        Windows
        Linux
        运行时是不同的。您需要在目标体系结构上重新编译代码。如果您在一个linux发行版上编译了代码,那么您就有可能在另一个发行版上运行它,因为没有库冲突,并且架构是相同的。您可以使用
        -static
        标志来避免共享库可能出现的问题。如果您必须在一台针对另一台机器的机器上编译代码,则需要
        交叉编译器工具链。举一个小例子,如果您想让代码在嵌入式系统上运行,您需要使用newlib之类的东西移植操作系统特定的函数。因为
        Linux
        发行版都使用相同的内核,所以这不是问题。显然,
        Windows
        Linux
        是完全不同的。
        Windows
        Linux
        运行时是不同的。您需要在目标体系结构上重新编译代码。如果您在一个linux发行版上编译了代码,那么您就有可能在另一个发行版上运行它,因为没有库冲突,并且架构是相同的。您可以使用
        -static
        标志来避免共享库可能出现的问题。如果您必须在一台针对另一台机器的机器上编译代码,则需要
        交叉编译器工具链。举一个小例子,如果您想让代码在嵌入式系统上运行,您需要使用newlib之类的东西移植操作系统特定的函数。因为
        Linux
        发行版都使用相同的内核,所以这不是问题。显然,
        Windows
        Linux
        是完全不同的。

        你真的应该调用
        g++
        。你不需要在客户端使用GCC,但你必须在客户端为目标体系结构和操作系统编译。可执行文件通常不可在平台之间移植,您必须为每个目标重新生成。您应该真正调用
        g++
        。客户端不需要GCC,但必须针对客户端上的目标体系结构和操作系统进行编译。可执行文件通常不能在平台之间移植,您必须为每个目标重新生成。