阅读:4182回复: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
|
|
2楼#
发布于: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; } |
|