dll - 如何在g++中静态包含库?

标签 dll g++ static-linking

如标题中所述,这是一个真正的初学者的问题。

我意识到经过几年的CS类(class)和项目后,我实际上并不需要导出一个其他人可以运行的可执行文件,而无需手动编译源代码(这是大多数/所有教授/TA所做的,因为他们想要以查看您的源代码)。

所以我的问题基本上是这样的:

当我编译一些基本的C++代码(例如“Hello World”代码)时,我似乎总是需要某种外部DLL来运行它。

  • Visual Studio需要.NET框架。
  • Cygwin需要Cygwin.dll。
  • MinGW需要libgcc_s_dw2-1.dll或类似的文件。

  • 那么,如何简单地编译一个可执行文件,使我(或给我文件的人)只需双击该文件并运行它?我猜想我可以在g++上使用一些奇特的命令行标志来静态链接DLL。我以前根本不需要这样做。

    正如我两次说过的,这是一个 super 初学者问题,但是我无法(轻松地)找到此问题的答案,StackOverflow或其他任何地方。我认为很大程度上是因为搜索词在其他问题的描述中非常常用。

    无论如何,我们将不胜感激。

    编辑:

    我实际上是在谈论Hello World程序。例如。:

    HelloWorld.cpp:
    #include <iostream>
    using namespace std;
    
    int main()
    {
        cout << "Hello World!" << endl;
    
        return 0;
    }
    

    最佳答案

    试试g++ -static -static-libgcc

    关于dll - 如何在g++中静态包含库?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8484264/

    相关文章:

    dll - 如何将非托管 DLL 和图像与托管 DLL 合并?

    c++ - 为什么链接到 LIB 会显着增加二进制文件的大小

    c - 编译链接到AIX上的静态库的C应用程序

    c - 我可以强制动态库链接到特定的动态库依赖项吗?

    c++ - 如何测试 C++ 是否正在使用 openmp?

    c++ - 使用 COM Interop 来使用 DLL

    c++ - 链接器如何在剥离的动态库中定位代码?

    c++ - 链接到 DLL 文件中的 Boost

    c++ - 单独键入每个库编译,但单个静态库存档失败

    c++ - snprintf : Same code - different errors/warnings on different g++ compilers