最近因工作需要在学习MTK,用的是MT6252。
刚拿到代码,编译环境配置好之后就开始第一次编译。
make new D805_RDA_GPRS,可刚开始没多久就出错了,提示“Could not run cl.exe. Please check your PATH!”,百度说是路径不对,我就按照他说的分析make2.pl,
die "Could not run \"cl.exe\". Please check your PATH!\n" if ($is_cl != 0);
查询语法发现是 $is_cl 不对,于是就向上查询,跟到这里。
{
$cl = 'cl';
$is_msdev = 0;
$is_cl = 0;
$VSCommonDir = "C:\\Program Files\\Microsoft Visual Studio\\Common";
$MSDevDir = "C:\\Program Files\\Microsoft Visual Studio\\Common\\MSDev98";
$MSVCDir = "C:\\Program Files\\Microsoft Visual Studio\\VC98";
$VcOsDir = "WIN95";
if (($newMoDIS == 1) || ($atMoDIS == 1) || ($action =~ /MoDIS/i)) {
if ((-d $VSCommonDir) && (-d $MSDevDir) && (-d $MSVCDir)) {
if ($ENV{"OS"} eq "Windows_NT") {
$VcOsDir = "WINNT";
$ENV{"PATH"} = "${MSDevDir}\\BIN;${MSVCDir}\\BIN;${VSCommonDir}\\TOOLS\\${VcOsDir};${VSCommonDir}\\TOOLS;" . $ENV{"PATH"};
} else {
$ENV{"PATH"} = "${MSDevDir}\\BIN;${MSVCDir}\\BIN;${VSCommonDir}\\TOOLS\\${VcOsDir};${VSCommonDir}\\TOOLS;" .$ENV{"windir"}. "\\SYSTEM;" . $ENV{"PATH"};
}
$ENV{"INCLUDE"} = "${MSVCDir}\\ATL\\INCLUDE;${MSVCDir}\\INCLUDE;${MSVCDir}\\MFC\\INCLUDE;". $ENV{"INCLUDE"};
$ENV{"LIB"} = "${MSVCDir}\\LIB;${MSVCDir}\\MFC\\LIB;". $ENV{"LIB"};
} else {
print "$VSCommonDir does NOT exist!\n" if (!-d $VSCommonDir);
print "$MSDevDir does NOT exist!\n" if (!-d $MSDevDir);
print "$MSVCDir does NOT exist!\n" if (!-d $MSVCDir);
}
$is_msdev = system("$msdev /? > nul 2>&1");
$is_cl = system("$cl > nul 2>&1");
}
}
elsif ($MoDIS_vc9 eq 1)
{
$cl = 'cl';
$is_devenv = 0;
$is_cl = 0;
$VSCommonDir = "C:\\Program Files\\Microsoft Visual Studio 9.0\\Common7";
$MSVCDir = "C:\\Program Files\\Microsoft Visual Studio 9.0\\VC";
$VcOsDir = "WIN95";
$FrameworkDir = "C:\\WINDOWS\\Microsoft.NET\\Framework";
$WindowsSDKDir = "C:\\Program Files\\Microsoft SDKs\\Windows\\v6.0A";
if (($newMoDIS == 1) || ($atMoDIS == 1) || ($action =~ /MoDIS/i)) {
if ((-d $VSCommonDir) && (-d $MSVCDir)) {
if ($ENV{"OS"} eq "Windows_NT") {
$VcOsDir = "WINNT";
$ENV{"PATH"} = "${WindowsSDKDir}\\bin;${VSCommonDir}\\IDE;${MSVCDir}\\BIN;${MSVCDir}\\vcpackages;${VSCommonDir}\\Tools\\${VcOsDir};${FrameworkDir}\\v3.5;${FrameworkDir}\\v2.0.50727;" . $ENV{"PATH"};
} else {
$ENV{"PATH"} = "${WindowsSDKDir}\\bin;${VSCommonDir}\\IDE;${MSVCDir}\\BIN;${MSVCDir}\\vcpackages;${VSCommonDir}\\Tools;${FrameworkDir}\\v3.5;${FrameworkDir}\\v2.0.50727;" . $ENV{"windir"}. "\\SYSTEM;" . $ENV{"PATH"};
}
$ENV{"INCLUDE"} = "${WindowsSDKDir}\\Include;${MSVCDir}\\ATLMFC\\INCLUDE;${MSVCDir}\\INCLUDE;". $ENV{"INCLUDE"};
$ENV{"LIB"} = "${WindowsSDKDir}\\Lib;${MSVCDir}\\ATLMFC\\LIB;${MSVCDir}\\LIB;". $ENV{"LIB"};
} else {
print "$VSCommonDir does NOT exist!\n" if (!-d $VSCommonDir);
print "$MSVCDir does NOT exist!\n" if (!-d $MSVCDir);
}
$is_devenv = system("$devenv /? >nul 2>&1");
$is_cl = system("$cl >nul 2>&1");
$is_vcpro = system("devenv /? >nul 2>&1") || &chk_vc9();
$modis_enable_sln = 2 if ($is_vcpro == 0);
}
}
再往上查询可以发现 $MoDIS_vc9 的值为1,也就是说编译器的路径为 C:\\Program Files\\Microsoft Visual Studio 9.0\\Common7,而这个路径我电脑上是没有的。
于是我就把if 跟else 的条件换了下,变成 if ($MoDIS_vc9 eq 1),这样在编译不在提示“Could not run cl.exe. Please check your PATH!” 这个错误。
可问题并没有解决,接着有出现问题了 提示 “Could not run vcbuild.exe. Please check your PATH!” 错误,编译中断。
百度之后并没有找到解决方法。于是查了vcbuild.exe 发现是vs2008中才有的。
于是,下载安装VS2008,将上面的 if ($MoDIS_vc9 eq 1)改回原来的值,在编译不再出错。问题解决。