2012-02-06 70 views
6

我正在尝试使用MSVC链接器的ICU代码。但是,启动Cygwin会将/ usr/local/bin和/ usr/bin放在路径的前面,导致link.exe始终调用Cygwin版本,而不是MSVC版本。我该如何解决这个配置问题?目前,我启动VS命令提示符,然后启动cygwin.bat。

在/ usr/local/bin目录:在/ usr/bin中:/ cygdrive/C /程序文件(x86)/微软 F#/ V4.0:/ cygdr IVE/C /程序文件(x86)/微软Visual Studio 10.0/VSTSDB/Deploy:/ cygdrive/c/Program Files(x86)/ Microsoft Visual Studio 10.0/Common7/IDE:/ cygdrive/c/Program Files(x86)/ Microsoft Visual Studio 10.0/VC/:/ cygdrive/c/Program Files(x86)/ Microsoft Visual Studio 10.0/Common7/Tools:/cygdrive/c/Windows/Microsoft.NET/F ramework/v4.0.30319:/ cygdrive/c/Windows/Microsoft。 NET/Framework/v3.5:/ cygdrive/c/Program Files(x86)/ Microsoft Visual Studio 10.0/VC/VCPackages:/ cygdrive/c/Prog ram文件(x86)/ HTML Help Workshop:/ cygdrive/c /程序文件(/cygdrive/c/Program Files(x86)/ Mic rosoft SDKs/Windows/v7.0A/bin/NETFX 4.0工具:/ cygdrive/c/Program 文件(x86)/ Mi crosoft SDKs/Windows/v7.0A/bin:/ cygdrive/c/Program 文件/ Common Files/Microsoft Shared/Windows Live:/ cygdrive/c/Windows/system32:/ cygdrive/c/Windows:/ cygdrive/c /Windows/System32/Wbem:/cygdrive/c/Windows/System32/WindowsPowerShell/v1.0:/cygd rive/c/Program Files(x86)/ Microsoft SQL Server/100/Tools/Binn:/ cygdrive/c/Progr am Files/Microsoft SQL Server/100/Tools/Binn:/ cygdrive/c/Program Files/Microsoft SQL Server/100/DTS/Binn:/ cygdrive/c/Program Files x86)/微软 ASP.NET/ASP.N ET网页/ v1 .0:/ cygdrive/c/Program Files/TortoiseHg:/ cygdrive/c/Program Files (x86)/GtkSharp/2.12/bin:/cygdrive/c/Users/tim/AppData/Roaming/npm:/cygdrive/ C/P rogram文件(x86)/的NodeJS:/ cygdrive/C /程序文件(x86)/通用 文件/忒/ QB POSSDKRuntime:/ cygdrive/C /程序文件(x86)/混帐/ CMD

ICU告诉我

确保PATH的顺序是MSVC,Cygwin的,然后其他 路径。配置脚本需要Cygwin中的某些工具(例如grep)。

更新。我cygwin.bat看起来是这样的:

关闭@echo

C:CHDIR C:\ cygwin的\ BIN

的bash --login -i

不是非常有帮助。

+0

你的'cygwin.bat'文件是否设置了'PATH'环境变量? – sarnold 2012-02-06 23:30:30

+1

这应该确实位于superuser.com上,但请查看您的主目录中的.bash_profile文件。你的路径很可能在那里设置,你应该可以修改它。 – 2012-02-07 04:28:17

+0

嗯,我也看过,但我拥有的只是[-f“$ {HOME} /。bashrc”];然后 源“$ {HOME}/.bashrc” fi和.bashrc也没有太多。是否有一些默认配置文件预先添加/ usr/local/bin,我可以将其添加进去? – tofutim 2012-02-07 08:15:56

回答

7

对于Cygwin的默认安装,PATH设置为/ etc/profile。您可以修改PATH,以便追加/ usr/local/bin:/ usr/bin而不是预先添加。

# PATH="/usr/local/bin:/usr/bin:${PATH}" 
PATH="${PATH}:/usr/local/bin:/usr/bin/" 

,导致:

Setting environment for using Microsoft Visual Studio 2010 x86 tools. 

C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC>c:\cygwin\cygwin.bat 

[email protected] ~ 
$ printenv PATH 
/cygdrive/c/Program Files (x86)/Microsoft F#/v4.0:/cygdrive/c/Program Files (x86 
)/Microsoft Visual Studio 10.0/VSTSDB/Deploy:/cygdrive/c/Program Files (x86)/Mic 
rosoft Visual Studio 10.0/Common7/IDE:/cygdrive/c/Program Files (x86)/Microsoft 
Visual Studio 10.0/VC/BIN:/cygdrive/c/Program Files (x86)/Microsoft Visual Studi 
o 10.0/Common7/Tools:/cygdrive/c/Windows/Microsoft.NET/Framework/v4.0.30319:/cyg 
drive/c/Windows/Microsoft.NET/Framework/v3.5:/cygdrive/c/Program Files (x86)/Mic 
rosoft Visual Studio 10.0/VC/VCPackages:/cygdrive/c/Program Files (x86)/HTML Hel 
p Workshop:/cygdrive/c/Program Files (x86)/Microsoft Visual Studio 10.0/Team Too 
ls/Performance Tools:/cygdrive/c/Program Files (x86)/Microsoft SDKs/Windows/v7.0 
A/bin/NETFX 4.0 Tools:/cygdrive/c/Program Files (x86)/Microsoft SDKs/Windows/v7. 
0A/bin:/cygdrive/c/Program Files/Common Files/Microsoft Shared/Windows Live:/cyg 
drive/c/Windows/system32:/cygdrive/c/Windows:/cygdrive/c/Windows/System32/Wbem:/ 
cygdrive/c/Windows/System32/WindowsPowerShell/v1.0:/cygdrive/c/Program Files (x8 
6)/Microsoft SQL Server/100/Tools/Binn:/cygdrive/c/Program Files/Microsoft SQL S 
erver/100/Tools/Binn:/cygdrive/c/Program Files/Microsoft SQL Server/100/DTS/Binn 
:/cygdrive/c/Program Files (x86)/Microsoft ASP.NET/ASP.NET Web Pages/v1.0:/cygdr 
ive/c/Program Files/TortoiseHg:/cygdrive/c/Program Files (x86)/GtkSharp/2.12/bin 
:/cygdrive/c/Users/tim/AppData/Roaming/npm:/cygdrive/c/Program Files (x86)/nodej 
s:/cygdrive/c/Program Files (x86)/Common Files/Intuit/QBPOSSDKRuntime:/cygdrive/ 
c/Program Files (x86)/Git/cmd:/usr/local/bin:/usr/bin/ 

[email protected] ~ 
$ which link 
/cygdrive/c/Program Files (x86)/Microsoft Visual Studio 10.0/VC/BIN/link 
+0

谢谢,这也回答了我的问题... – 2012-06-28 11:22:55

+0

当我回到我问及回答的问题时,我喜欢它。 – tofutim 2012-12-22 00:31:08

3

我认为,一个更清洁的方法是使用在Cygwin的/etc/profile创建ORIGINAL_PATH变量。而不是修改此文件,请修改您的.bashrc文件以使用ORIGINAL_PATH,然后附加/usr/local/bin/usr/bin

.bashrc

export PATH=$ORIGINAL_PATH:/usr/local/bin:/usr/bin 

然后,你不必修改Cygwin的安装文件。

+1

这确实是一种更简洁的方式,无需修改'/ etc/profile'(从而防止未来的更新)。但是,自从'base-utils'的版本4.1-3(最初被问到这个问题之后发布)之后才有可能。另外,环境变量不应该在'.bashrc'中设置:使用'.bash_profile'或'.profile'来设置登录shell中的环境变量。 – 2016-05-05 15:49:36

相关问题