c-静态链接英特尔CRT



我正在使用英特尔编译器编译C代码。我将icc与visualstudio 2010集成在一起。我想生成一个优化的可执行文件,它将在windows机器上运行。它实际上是云中的一个虚拟机。我没有机会在目标机器上安装任何可再发行的库。我想静态地链接所有需要的库。我该怎么做?

我想你指的是icl,因为你提到的是VS2010/Windows(icc应该是Linux/Mac版本):只需在项目设置->配置属性->C/C++->代码生成下选择"多线程(/MT)"就可以了。这将导致微软软件公司和英特尔的运行时都被静态链接到应用程序中。

但这也取决于你使用的其他库,它可能不适用于所有人。在这种情况下,您可以使用dependens.exe检查依赖项(http://www.dependencywalker.com/)并将它们与.exe并排复制到目标计算机。

尝试将-i-static -static-libcxa添加到最终链接中。

这应该只对intel库强制静态链接。

(你也可以像littleadv在评论中建议的那样尝试-static,但这将产生一个根本没有共享库的巨大静态可执行文件)

还有一点需要注意:一个简单的解决方法是将具有所需共享库(主机上不存在的共享库)的可执行文件复制到同一目录。然后在运行动态链接的可执行文件之前设置LD_LIBRARY_PATH=.。这将强制搜索当前目录和系统目录中的库。

编辑:我刚刚注意到你说的是"windows机器"。以上内容与UNIX机器相关,因此可能对您没有用处。我会把它留在这里,以防有人需要信息。

最新更新