|
阅读:4404回复:2
Windows下使用Intel C++ Compiler编译Firefox
http://hi.baidu.com/coolypf
Linux下用icc替换gcc编译Firefox比较容易,Windows下用icl替换cl则很困难。 下面的程序可以帮助骗过configure脚本,将编译所得程序重命名为cl,放入msys/bin目录中。 make -f client.mk build启动编译,遇到错误停止时,configure步骤已经过去, 可以用make -f client.mk build CC=icl CXX=icl继续编译。 目前测试,可以顺利完成整个编译过程(有些代码要稍加修改),但ICC启用PGO选项后编译出来的程序没法运行。 |
|
|
1楼#
发布于:2010-01-27 17:45
/*********************************
* ICC wrapper for Mozilla Build *
* by coolypf 20100127 *
*********************************/
#include <stdio.h>
#include <stdlib.h>
#include <windows.h>
#include <string>
using std::string;
char cl[]="c:\\Program Files (x86)\\Microsoft Visual Studio 9.0\\VC\\BIN\\cl.exe";
char icl[]="c:\\Program Files (x86)\\Intel\\Compiler\\11.1\\051\\Bin\\ia32\\icl.exe";
char clflags[]="/O2";
char iclerr[]=": error: ";
PROCESS_INFORMATION pi;
HANDLE Exec(const char *cmd)
{
SECURITY_ATTRIBUTES sa;
HANDLE hRead,hWrite;
sa.nLength = sizeof(SECURITY_ATTRIBUTES);
sa.lpSecurityDescriptor = NULL;
sa.bInheritHandle = TRUE;
if (!CreatePipe(&hRead,&hWrite,&sa,0))
{
printf("Error On CreatePipe()");
exit(-1);
}
STARTUPINFOA si;
si.cb = sizeof(STARTUPINFO);
GetStartupInfoA(&si);
si.hStdError = hWrite;
si.hStdOutput = hWrite;
si.wShowWindow = SW_HIDE;
si.dwFlags = STARTF_USESHOWWINDOW | STARTF_USESTDHANDLES;
if (!CreateProcessA(NULL,_strdup(cmd),NULL,NULL,TRUE,NULL,NULL,NULL,&si,&pi))
{
printf("Error on CreateProcess()");
exit(-1);
}
CloseHandle(hWrite);
return hRead;
} |
|
|
2楼#
发布于:2010-01-27 17:45
|
|