問題:
在新安裝好windows 7
x64的PC / NB上,
就算已經裝了之前OK的cygwin 與 toolchain , 但是還是發生build FW error,
但是同樣的cygwin,
toolchain(放置C:\Program Files)安裝在其他PC / NB卻是OK.
Error
msg :
原因:
Windows沒重新在Cygwin底下將長檔名(C:\Program Files)轉換為8.3格式(C:\Progra~1)。
解決方式:
- 直接建一個C:\Progra~1並將toolchain放在這路徑底下。
- 將C:\Program Files 改為虛擬碟(cmd>subst)如 R:\,避開長檔名問題。
/J "C:\PROGRA~1\" "C:\Program Files\" //hard/soft linkmklink
背景知識:
後來進化到可用長檔名,但考慮到向下相容,每個長檔明會自動產生一個相應的8.3檔案名稱,其產生的規則如下:
- 如果長檔名是8.3大寫字母,在磁碟上不會儲存任何長檔名。
- 例如:"TEXTFILE.TXT"
- 如果長檔名是8.3大小寫混合字母,那麼長檔名會儲存大小寫混合字母的檔名,在8.3的名稱會儲存它的大寫字母版本。
- 例如:"TextFile.Txt"會轉換成"TEXTFILE.TXT"。
- 長檔名只會保留基本名稱的首6位半形字元,以一個~號連接著,再以一個數字作結尾以作識別(數字應該是順序的,假設前六字源相同就會, 2 ,3,...的加上去),最後以副檔名的首3位字元作結束。從這個結果中再對無法使用的字元再作刪除,像(+)號會轉換成(_)號,另外這也會轉成全大寫字母。
例如:"C:\Program Files" ->"C:\Progra~1"(如"Progra~1"已經存在,"Progra~2 ")
- 從Windows 2000開始,如果最少4個檔案或資料夾的短檔名的首6個字元是相同的話,該長檔名會另行將檔名轉作基本名稱的首2位字元(或如果基本名稱只有1個字元的話,便全取檔案名稱1個字元),再以4位元十六進位的檔案名稱的切細值連接上,接著~號,再接著一位的數字及.號,最後以首3位的副檔名作為結尾。結果,相比之中,這檔名是已經分拆及改用全大寫字母。
- 例如:"TextFile.Mine.txt"會轉換成"TE021F~1.TXT"。
沒有留言:
張貼留言