Dll 如何在g++;?
正如标题中提到的,这是一个真正的初学者问题 我意识到,经过几年的CS课程和项目等,我从来没有真正需要导出一个其他人不需要手动编译源代码就可以运行的可执行文件(这是大多数/所有教授/助教所做的,因为他们无论如何都想看你的源代码) 所以我的问题基本上是这样的: 当我编译一些基本的C++代码(例如“hello World”代码)时,我总是需要某种外部的DLL来运行它。Dll 如何在g++;?,dll,g++,static-linking,Dll,G++,Static Linking,正如标题中提到的,这是一个真正的初学者问题 我意识到,经过几年的CS课程和项目等,我从来没有真正需要导出一个其他人不需要手动编译源代码就可以运行的可执行文件(这是大多数/所有教授/助教所做的,因为他们无论如何都想看你的源代码) 所以我的问题基本上是这样的: 当我编译一些基本的C++代码(例如“hello World”代码)时,我总是需要某种外部的DLL来运行它。 VisualStudio需要.NET框架 Cygwin需要Cygwin.dll MinGW需要libgcc_s_dw2-1.dll或
- VisualStudio需要.NET框架
- Cygwin需要Cygwin.dll
- MinGW需要libgcc_s_dw2-1.dll或类似的东西
#include <iostream>
using namespace std;
int main()
{
cout << "Hello World!" << endl;
return 0;
}
#包括
使用名称空间std;
int main()
{
如果您已经获得了需要链接的静态库(.lib或.a),请在链接应用程序时将它们与对象文件放在一起,如
g++foo.o libfoo.a-o foo
我认为您真正的问题是如何定位应用程序需要哪些静态lib以及如何获取它们,也许您应该在这里发布代码,让我们知道您需要链接到哪个库。但是,您通常应该避免静态链接。。通常Linux机器上的几乎所有实用程序都是动态链接的nked:您可以使用文件或ldd
来了解可执行文件是否是静态链接的。在我的Debian/Sid系统上/usr/bin/
包含7303个文件,但只有一个是静态链接的(它是/usr/bin/rar
)
使用动态链接更好,因为它使用更少的磁盘空间,最重要的是动态库被更新,这有利于所有动态链接它们的可执行文件
如果您关心依赖关系,请使用软件包管理器(或将程序作为软件包分发)。以下是如何:
简单地说,您指定将所有标准内容链接到可执行文件中
g++ -o c:\prog.exe c:\HelloWorld.cpp -static-libgcc -static-libstdc++
希望能有帮助