我正在使用intel编译器编译C代码。我将icc与visual studio 2010集成在一起。我想生成一个优化的可执行文件,它将在Windows机器上运行。它实际上是云中的虚拟机。我没有机会将任何可再发行的库安装到目标机器上。我想静态链接所有必需的库。我怎么能这样做?
答案 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=.
。这将强制搜索当前目录中的库以及系统目录。