静态链接英特尔CRT

时间:2011-06-14 02:47:20

标签: c visual-studio intel

我正在使用intel编译器编译C代码。我将icc与visual studio 2010集成在一起。我想生成一个优化的可执行文件,它将在Windows机器上运行。它实际上是云中的虚拟机。我没有机会将任何可再发行的库安装到目标机器上。我想静态链接所有必需的库。我怎么能这样做?

2 个答案:

答案 0 :(得分:1)

我想你的意思是icl,因为你提到了VS2010 / Windows(icc将是Linux / Mac版):只需在项目设置下选择'多线程(/ MT)' - >配置属性 - > C / C ++ - >代码生成应该有效。这将导致MSVC和英特尔运行时静态链接到应用程序。

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

答案 1 :(得分:0)

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

这应该仅强制用于intel库的静态链接。

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

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

编辑:我刚注意到你说“windows machine”。以上内容与UNIX机器相关,因此可能对您没用。如果有人需要这些信息,我会留在这里。