当我运行我的scons时,我得到以下IOError,并且它找不到指定的路径。我检查了我的Path是在Windows路径中指向我的Python的核心。我在Win7中运行。
C:\myrepopath\PROJECT_FILE>C:\Python27\Scripts\scons.bat
scons: Reading SConscript files ...
The system cannot find the path specified.
IOError: The system cannot find the path specified.
:
File "C:\myrepopath\PROJECT_FILE\SConstruct", line 55:
''')
File "C:\Python27\Scripts\..\Lib\site-packages\scons-2.3.4\SCons\Script\SConscript.py", line 612:
env = self.factory()
File "C:\Python27\Scripts\..\Lib\site-packages\scons-2.3.4\SCons\Script\SConscript.py", line 592:
default_env = SCons.Defaults.DefaultEnvironment()
File "C:\Python27\Scripts\..\Lib\site-packages\scons-2.3.4\SCons\Defaults.py", line 88:
_default_env = SCons.Environment.Environment(*args, **kw)
File "C:\Python27\Scripts\..\Lib\site-packages\scons-2.3.4\SCons\Environment.py", line 1003:
apply_tools(self, tools, toolpath)
File "C:\Python27\Scripts\..\Lib\site-packages\scons-2.3.4\SCons\Environment.py", line 107:
env.Tool(tool)
File "C:\Python27\Scripts\..\Lib\site-packages\scons-2.3.4\SCons\Environment.py", line 1811:
tool(self)
File "C:\Python27\Scripts\..\Lib\site-packages\scons-2.3.4\SCons\Tool\__init__.py", line 183:
self.generate(env, *args, **kw)
File "C:\Python27\Scripts\..\Lib\site-packages\scons-2.3.4\SCons\Tool\default.py", line 41:
SCons.Tool.Tool(t)(env)
File "C:\Python27\Scripts\..\Lib\site-packages\scons-2.3.4\SCons\Tool\__init__.py", line 183:
self.generate(env, *args, **kw)
File "C:\Python27\Scripts\..\Lib\site-packages\scons-2.3.4\SCons\Tool\mslink.py", line 303:
msvc_setup_env_once(env)
File "C:\Python27\Scripts\..\Lib\site-packages\scons-2.3.4\SCons\Tool\MSCommon\vc.py", line 374:
msvc_setup_env(env)
File "C:\Python27\Scripts\..\Lib\site-packages\scons-2.3.4\SCons\Tool\MSCommon\vc.py", line 481:
d = msvc_find_valid_batch_script(env,version)
File "C:\Python27\Scripts\..\Lib\site-packages\scons-2.3.4\SCons\Tool\MSCommon\vc.py", line 431:
d = script_env(vc_script, args=arg)
File "C:\Python27\Scripts\..\Lib\site-packages\scons-2.3.4\SCons\Tool\MSCommon\vc.py", line 320:
stdout = common.get_output(script, args)
File "C:\Python27\Scripts\..\Lib\site-packages\scons-2.3.4\SCons\Tool\MSCommon\common.py", line 193:
raise IOError(stderr.decode("mbcs"))
知道这里出了什么问题吗?
我的Scons和Python版本以及我的环境变量是:
C:\>echo %PATH%
C:\qnx660\host\win32\x86\usr\bin;C:\qnx660\.qnx\bin;C:\qnx660\jre\bin;C:\Python27\;C:\Python27\Scripts;C:\Ruby193\bin;C:\Users\SESAxxxxx\AppData\Local\GitHub\PortableGit
_c2ba306e536fdf878271f7fe636a147ff37326ad\libexec\git-core;C:\ProgramData\Oracle\Java\javapath;C:\Klocwork\Insight 10.0 Command Line\bin;C:\Program Files (x86)\bin;C:\Pro
gram Files (x86)\Common Files\Gtk\bin;C:\Windows\system32;C:\Windows;C:\Windows\System32\Wbem;C:\Program Files (x86)\QT Lite\QTSystem;C:\Program Files (x86)\Box\Box Edit\
;C:\Program Files (x86)\1E\NomadBranch\;C:\Program Files (x86)\AccuRev\bin;C:\qnx660\host\win32\x86\usr\bin;C:\qnx660\.qnx\bin;C:\qnx660\jre\bin;C:\Program Files (x86)\7-
Zip;C:\Program Files (x86)\WinMerge;C:\Program Files\doxygen\bin;C:\Program Files (x86)\GtkSharp\2.12\bin;C:\Program Files (x86)\Windows Live\Shared;C:\Program Files\node
js\;C:\Program Files\nodejs\node_modules\npm\bin;C:\Program Files\nodejs\node_modules\npm\;C:\Windows\System32\WindowsPowerShell\v1.0\;C:\Program Files (x86)\WebEx\Produc
tivity Tools;C:\Program Files\Git\cmd;C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\bin;C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC;C:\myrepopath\Softwar eTools\beautify\Software\Utilities\beautify;C:\Users\SESAxxxxx\AppData\Roaming\npm
C:\myrepopath\PROJECT_FILE>echo %HOME%
c:\users\SESAxxxxx\Documents
C:\myrepopath\PROJECT_FILE>scons --version
SCons by Steven Knight et al.:
script: v2.3.4, 2014/09/27 12:51:43, by garyo on lubuntu
engine: v2.3.4, 2014/09/27 12:51:43, by garyo on lubuntu
engine path: ['C:\\Python27\\Scripts\\..\\Lib\\site-packages\\scons-2.3.4\\SCons']
Copyright (c) 2001 - 2014 The SCons Foundation
C:\myrepopath\PROJECT_FILE>python --version
Python 2.7.5
C:\>python
Python 2.7.5 (default, May 15 2013, 22:43:36) [MSC v.1500 32 bit (Intel)] on win32
我也打开了Scons调试器:
set SCONS_MSCOMMON_DEBUG=-
然后再次运行scons我看到了:
C:\myrepopath\PROJECT_FILE>C:\Python27\Scripts\scons.bat
scons: Reading SConscript files ...
trying to find VC 12.0
find_vc_dir(): no VC registry key 'Software\\Wow6432Node\\Microsoft\\VisualStudio\\12.0\\Setup\\VC\\ProductDir'
find_vc_pdir return None for ver 12.0
trying to find VC 12.0Exp
find_vc_dir(): no VC registry key 'Software\\Wow6432Node\\Microsoft\\VCExpress\\12.0\\Setup\\VC\\ProductDir'
find_vc_pdir return None for ver 12.0Exp
trying to find VC 11.0
find_vc_dir(): no VC registry key 'Software\\Wow6432Node\\Microsoft\\VisualStudio\\11.0\\Setup\\VC\\ProductDir'
find_vc_pdir return None for ver 11.0
trying to find VC 11.0Exp
find_vc_dir(): no VC registry key 'Software\\Wow6432Node\\Microsoft\\VCExpress\\11.0\\Setup\\VC\\ProductDir'
find_vc_pdir return None for ver 11.0Exp
trying to find VC 10.0
find_vc_dir(): found VC in registry: C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\
found VC 10.0
trying to find VC 10.0Exp
find_vc_dir(): found VC in registry: C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\
found VC 10.0Exp
trying to find VC 9.0
find_vc_dir(): no VC registry key 'Software\\Wow6432Node\\Microsoft\\VisualStudio\\9.0\\Setup\\VC\\ProductDir'
find_vc_pdir return None for ver 9.0
trying to find VC 9.0Exp
find_vc_dir(): no VC registry key 'Software\\Wow6432Node\\Microsoft\\VCExpress\\9.0\\Setup\\VC\\ProductDir'
find_vc_pdir return None for ver 9.0Exp
trying to find VC 8.0
find_vc_dir(): no VC registry key 'Software\\Wow6432Node\\Microsoft\\VisualStudio\\8.0\\Setup\\VC\\ProductDir'
find_vc_pdir return None for ver 8.0
trying to find VC 8.0Exp
find_vc_dir(): no VC registry key 'Software\\Wow6432Node\\Microsoft\\VCExpress\\8.0\\Setup\\VC\\ProductDir'
find_vc_pdir return None for ver 8.0Exp
trying to find VC 7.1
find_vc_dir(): no VC registry key 'Software\\Wow6432Node\\Microsoft\\VisualStudio\\7.1\\Setup\\VC\\ProductDir'
find_vc_pdir return None for ver 7.1
trying to find VC 7.0
find_vc_dir(): no VC registry key 'Software\\Wow6432Node\\Microsoft\\VisualStudio\\7.0\\Setup\\VC\\ProductDir'
find_vc_pdir return None for ver 7.0
trying to find VC 6.0
find_vc_dir(): no VC registry key 'Software\\Wow6432Node\\Microsoft\\VisualStudio\\6.0\\Setup\\Microsoft Visual C++\\ProductDir'
find_vc_pdir return None for ver 6.0
msvc_setup_env()
get_default_version()
get_default_version(): msvc_version:None msvs_version:None
installed_vcs:['10.0', '10.0Exp']
msvc_setup_env: using default installed MSVC version '10.0'
msvc_setup_env: using specified MSVC version '10.0'
vc.py:msvc_find_valid_batch_script()
vc.py:get_host_target()
vc.py:get_host_target() req_target_platform:None
msvs_find_valid_batch_script(): req_target_platform None target_platform:amd64
msvs_find_valid_batch_script(): host_platform: amd64 try_target_archs:['amd64', 'x86_amd64', 'x86']
vc.py:msvc_find_valid_batch_script() trying target_platform:amd64
find_vc_dir(): found VC in registry: C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\
vc.py: find_batch_file() pdir:C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\
sdk.py:get_installed_sdks()
MSCommon/sdk.py: trying to find SDK 7.0
find_sdk_dir(): checking registry:Software\Microsoft\Microsoft SDKs\Windows\v7.0\InstallationFolder
find_sdk_dir(): no SDK registry key 'Software\\Microsoft\\Microsoft SDKs\\Windows\\v7.0\\InstallationFolder'
MSCommon/sdk.py: trying to find SDK 6.1
find_sdk_dir(): checking registry:Software\Microsoft\Microsoft SDKs\Windows\v6.1\InstallationFolder
find_sdk_dir(): no SDK registry key 'Software\\Microsoft\\Microsoft SDKs\\Windows\\v6.1\\InstallationFolder'
MSCommon/sdk.py: trying to find SDK 6.0A
find_sdk_dir(): checking registry:Software\Microsoft\Microsoft SDKs\Windows\v6.0A\InstallationFolder
find_sdk_dir(): no SDK registry key 'Software\\Microsoft\\Microsoft SDKs\\Windows\\v6.0A\\InstallationFolder'
MSCommon/sdk.py: trying to find SDK 6.0
find_sdk_dir(): checking registry:Software\Microsoft\Microsoft SDKs\Windows\v6.0\InstallationFolder
find_sdk_dir(): no SDK registry key 'Software\\Microsoft\\Microsoft SDKs\\Windows\\v6.0\\InstallationFolder'
MSCommon/sdk.py: trying to find SDK 2003R2
find_sdk_dir(): checking registry:Software\Microsoft\MicrosoftSDK\InstalledSDKS\D2FF9F89-8AA2-4373-8A31-C838BF4DBBE1\Install Dir
find_sdk_dir(): no SDK registry key 'Software\\Microsoft\\MicrosoftSDK\\InstalledSDKS\\D2FF9F89-8AA2-4373-8A31-C838BF4DBBE1\\Install Dir'
MSCommon/sdk.py: trying to find SDK 2003R1
find_sdk_dir(): checking registry:Software\Microsoft\MicrosoftSDK\InstalledSDKS\8F9E5EF3-A9A5-491B-A889-C58EFFECE8B3\Install Dir
find_sdk_dir(): no SDK registry key 'Software\\Microsoft\\MicrosoftSDK\\InstalledSDKS\\8F9E5EF3-A9A5-491B-A889-C58EFFECE8B3\\Install Dir'
vc.py:msvc_find_valid_batch_script() vc_script:C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\vcvarsall.bat sdk_script:None
vc.py:msvc_find_valid_batch_script() use_script 2 u'C:\\Program Files (x86)\\Microsoft Visual Studio 10.0\\VC\\vcvarsall.bat', args:amd64
PATH: C:\Windows\System32
Calling 'C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\vcvarsall.bat amd64'
The system cannot find the path specified.
IOError: The system cannot find the path specified.
:
File "C:\myrepopath\PROJECT_FILE\SConstruct", line 55:
''')
File "C:\Python27\Scripts\..\Lib\site-packages\scons-2.3.4\SCons\Script\SConscript.py", line 612:
env = self.factory()
File "C:\Python27\Scripts\..\Lib\site-packages\scons-2.3.4\SCons\Script\SConscript.py", line 592:
default_env = SCons.Defaults.DefaultEnvironment()
File "C:\Python27\Scripts\..\Lib\site-packages\scons-2.3.4\SCons\Defaults.py", line 88:
_default_env = SCons.Environment.Environment(*args, **kw)
File "C:\Python27\Scripts\..\Lib\site-packages\scons-2.3.4\SCons\Environment.py", line 1003:
apply_tools(self, tools, toolpath)
File "C:\Python27\Scripts\..\Lib\site-packages\scons-2.3.4\SCons\Environment.py", line 107:
env.Tool(tool)
File "C:\Python27\Scripts\..\Lib\site-packages\scons-2.3.4\SCons\Environment.py", line 1811:
tool(self)
File "C:\Python27\Scripts\..\Lib\site-packages\scons-2.3.4\SCons\Tool\__init__.py", line 183:
self.generate(env, *args, **kw)
File "C:\Python27\Scripts\..\Lib\site-packages\scons-2.3.4\SCons\Tool\default.py", line 41:
SCons.Tool.Tool(t)(env)
File "C:\Python27\Scripts\..\Lib\site-packages\scons-2.3.4\SCons\Tool\__init__.py", line 183:
self.generate(env, *args, **kw)
File "C:\Python27\Scripts\..\Lib\site-packages\scons-2.3.4\SCons\Tool\mslink.py", line 303:
msvc_setup_env_once(env)
File "C:\Python27\Scripts\..\Lib\site-packages\scons-2.3.4\SCons\Tool\MSCommon\vc.py", line 374:
msvc_setup_env(env)
File "C:\Python27\Scripts\..\Lib\site-packages\scons-2.3.4\SCons\Tool\MSCommon\vc.py", line 481:
d = msvc_find_valid_batch_script(env,version)
File "C:\Python27\Scripts\..\Lib\site-packages\scons-2.3.4\SCons\Tool\MSCommon\vc.py", line 431:
d = script_env(vc_script, args=arg)
File "C:\Python27\Scripts\..\Lib\site-packages\scons-2.3.4\SCons\Tool\MSCommon\vc.py", line 320:
stdout = common.get_output(script, args)
File "C:\Python27\Scripts\..\Lib\site-packages\scons-2.3.4\SCons\Tool\MSCommon\common.py", line 193:
raise IOError(stderr.decode("mbcs"))
C:\myrepopath\PROJECT_FILE>
这是我的Sconstruct片段:
###############################################################################
# Included Modules #
###############################################################################
import os
#from glob import glob
#from os.path import basename, splitext, exists, isdir, join, normcase
#from os import chmod
import re
import sys
import XanTools
from Crypto.Cipher import AES
###############################################################################
# Constant Data #
###############################################################################
PROD_INFO_FILE = 'DOC/prod_info.xml'
###############################################################################
# Utility functions #
###############################################################################
###############################################################################
# The main build script starts here #
###############################################################################
Help('''SCons build for x Board
x
x
x
x
x
x
x
x
x
x
x
x
x
x
x
x
x
x
x
x
x - x shared library for x simulator
''')
#def MyGlob(pattern, ondisk=True, source=True, strings=False, recursive=False):
# """ Recursive glob function """
# dirname = os.path.dirname(pattern)
# pattern = os.path.basename(pattern)
# names = Glob(os.path.join(dirname, pattern), ondisk, source, strings)
# if recursive :
# for entry in Glob(os.path.join(dirname, '*'), source=True, strings=False):
# if entry.__class__ is SCons.Node.FS.Dir :
# names += MyGlob(os.path.join(str(entry), pattern), ondisk, source, strings, recursive)
# return names
# Function to generat uEnv.txt files based on IFS file name
def fnGenUEnvTxt(target, source, env):
filename = str(target[0])
print 'Generating %s' % filename
# Use binary mode to force UNIX line endings
outfp = open(filename, 'wb')
outfp.write( """# x
addr=x
# x
x
# x
x
# x
x
# x
x
# x
x
# x
x
# x
x
# x
x
# x
x
# x
x
# x
x
""" % ( os.path.basename( str( source[ 0 ] ) ) ) )
outfp.close()
# Command line option to build a debug version (Release is the default)
AddOption('--variant',
dest='variant',
default='release',
help='Build a selected variant (debug or release)')
variant = GetOption('variant')
# Supported platforms are win32, posix, linux_am335x_evm and qnx_am335x.
# SE1 system board support will come later
AddOption('--platform',
dest='platform',
default=None,
help="CPU platform to build on")
platform = GetOption('platform')
# Specify a project for QNX debug configurations
AddOption('--debug_project',
dest='debug_project',
help='Project name to attach to debug configurations')
debug_project = GetOption('debug_project')
# Specify a host for debug configurations
AddOption('--debug_host',
dest='debug_host',
help='Host name for debugging on target board')
debug_host = GetOption('debug_host')
# Specify to build BSP first, necessary when BSP has never been built
AddOption( '--bsp_first',
dest='bsp_first',
help='Build BSP first')
bsp_first = GetOption('bsp_first')
AddOption( '--build_web',
dest='build_web',
help='web build')
build_web = GetOption('build_web')
# Specify to build AFS (encrypted IFS)
AddOption( '--build_afs',
dest='afs',
help='Build AFS')
afs = GetOption('afs')
# Specify to regenerate config files based on ICB artifacts
AddOption( '--icbconfig',
dest='icbconfig',
help='Gen ICB XML files')
icbconfig = GetOption('icbconfig')
# Get the default environment for all x products, customized from
# the product info file
env = XanTools.fnDefaultEnvironment(PROD_INFO_FILE)
env['VARIANT'] = variant
if platform is not None:
env['PLATFORM'] = platform
# Override variant for win32 platform is always debug
if env['PLATFORM'] in ['win32', 'posix', 'qnx_x86']:
env['VARIANT'] = 'debug'
# Command line debug options
if debug_project is not None:
env['DEBUG_PROJECT'] = debug_project
if debug_host is not None:
env['DEBUG_HOST'] = debug_host
if env['PLATFORM'] == 'qnx_am335x_bbb':
bsp_dir = 'Software/Code/OS/bsp/Src/'
sconscript_file = bsp_dir + 'SConscript'
elif env['PLATFORM'] == 'qnx_am335x_evm':
bsp_dir = 'Software/Code/OS/QNX/bsp-nto650-ti-am335x-evm/'
sconscript_file = bsp_dir + 'SConscript'
else:
bsp_dir = None
sconscript_file = None
# Additional includes if building to a specific BSP
if bsp_dir is not None:
env['BSPPATH'] = ['#' + bsp_dir + 'prebuilt/usr/include',
'#' + bsp_dir + 'src/hardware/startup/lib/public']
# Can build the bootloader only for QNX targets from a Linux host
if env['PLATFORM'].startswith('qnx') and (sys.platform != 'win32'):
# Build boot loader
bootloader = env.SConscript( 'Software/Code/BootLoader/u-boot/SConscript',
exports='env' )
else:
# The boot loader currently cannot be built under Windows
bootloader = []
# Build the processes and libraries
variant_binaries, shared_libraries, buildenv = env.SConscript('Software/Code/SConscript',
variant_dir='${PLATFORM}_${VARIANT}',
duplicate=0,
exports='env')
variant_binaries += bootloader
# Build the above software into an image file system
if sconscript_file is not None:
env.Tool('qnx', platform=env['PLATFORM'], variant=env['VARIANT'])
bsp = env.SConscript(sconscript_file,
variant_dir='Software/Build/bspifs',
duplicate=1,
exports='env')
else:
bsp = variant_binaries[0:1]
if (bsp_first is None) and (env['PLATFORM'].startswith('qnx')):
if (build_web is not None):
env.SConscript('Software/Code/Web/SConscript', exports='env' )
ifsfile = env.SConscript('Software/Config/SConscript',
exports='env bsp variant_binaries shared_libraries')
if sys.platform == "win32":
binaries = [ ifsfile[ 0 ], File( bsp_dir + 'images/MLO' ), File( bsp_dir + 'images/u-boot.img' ) ]
else:
Depends( ifsfile, bootloader )
binaries = [ ifsfile[ 0 ], bootloader[ 0 ], bootloader[ 1 ] ]
# Copy the binaries to the top level, renaming the first to the part number
# with the same file extension as before
target_binaries = []
for i, src in enumerate(binaries):
if i == 0:
new_file_name = env['PART_NUMBER'] + os.path.splitext(str(src))[1]
else:
new_file_name = os.path.basename(str(src))
target_binaries += Command(new_file_name,
str( src ),
[
Copy('$TARGET', '$SOURCE'),
Chmod('$TARGET', 0777),
])
Depends( target_binaries, ifsfile )
env['BINARY'] = target_binaries[0]
def EncryptFile( target, source, env ):
# generate random initialization vector
iv = os.urandom(16)
# print 'IV: ' + iv.encode('hex')
keyList = [ 0x3c, 0x21, 0x6a, 0x37, 0xba, 0xca, 0xfd, 0x91, 0xff, 0x49, 0x22, 0x28, 0x58, 0x3b, 0xeb, 0xf5 ]
key = "".join( chr( i ) for i in keyList )
# print [('%02X' % ord(i)) for i in key]
aes = AES.new( key, AES.MODE_CBC, iv )
infp = open( str( source[ 0 ] ), 'rb' )
data_in = infp.read()
infp.close()
# print "*** Read " + str( len( data_in ) ) + " bytes"
# print "*** Block size = " + str( AES.block_size )
# print "*** Blocks = " + str( len( data_in ) / AES.block_size )
# print "*** Left over bytes = " + str( len( data_in ) % AES.block_size )
data_in += " " * ( AES.block_size - len( data_in ) % AES.block_size )
data_out = aes.encrypt( data_in )
outfp = open( str( target[ 0 ] ), 'wb' )
# store IV as first 16 bytes before ciphertext
outfp.write( iv )
outfp.write( data_out )
outfp.close()
if afs is not None:
afs_file = env.Command( os.path.splitext( os.path.basename( str( target_binaries[ 0 ] ) ) )[ 0 ] + ".afs",
target_binaries[ 0 ],
EncryptFile )
Depends( afs_file, ifsfile )
target_binaries[0] = afs_file
# Add in uEnv.txt which needs to know the name of the first binary
target_binaries += env.Command('uEnv.txt',
target_binaries[0],
fnGenUEnvTxt)
else:
target_binaries = []
env['BINARY'] = ','.join([str(file) for file in target_binaries])
print 'variant binaries: ', variant_binaries
print 'target binaries: ', target_binaries
if icbconfig is not None:
# Support for regenerating config files based on ICB artifacts
sysdef = env.Command("Software/Utilities/Config/x.xml",
["Software/Utilities/Config/x.xml",
"Software/Utilities/Config/x.xml",
"Software/Utilities/Config/x.py"],
"python x.py", chdir=1)
Depends(ifsfile, sysdef)
# Add support for the auto-incrementing build number
XanTools.fnBuildNumberSupport(env)
# Support for the Software Version PDF and the bundled zip files
XanTools.fnBundleSupport(env, PROD_INFO_FILE, target_binaries)
# Support for running unit tests
try:
del(buildenv['PDB'])
except KeyError:
pass
testlib, testenv = buildenv.SConscript('Software/Code/libs/CppUTest/SConscript',
exports='buildenv')
# Print out the program environment (for QNX builds)
print "\nProgram environment:"
envkeys = os.environ.keys()
envkeys.sort()
for key in envkeys:
print "%s : %s" % (key, os.environ[key])
print "\n"
env.Alias( 'bsp', [bsp, variant_binaries, shared_libraries] )
答案 0 :(得分:0)
一旦我在regedit中删除了别名密钥(我的包含doskeys的别名批处理文件),就解决了这个问题。我按照stackoverflow aliases in windoes, look at the third answer的说明进行操作。但它导致我的scons构建崩溃!
我从来不知道 regedit 可以通过添加自动运行密钥来破坏它! Windows的行为与Linux完全没有任何关系,我是一个Linux人,不得不忍受使用Windows一段时间!