cygwin 1.7 release

很久沒寫軟體相關的東西,不過年前(2009年12月)正式釋出的cygwin 1.7值得一提

cygwin是win32底下最完整的一套posix環境,雖然compile速度和為數不少的bug一直為人所垢病,但是在win32底下如果沒有它,恐怕很多事還做不了。

cygwin 1.7是在1.5之後隔了六年才推出的major release,那麼究竟有什麼差別呢?
除了fstab支援,win 7支援,及不再支援win95/98/me系列以外,我覺得最重要的變更就是在本版支援了utf-8(我相信很多人和我一樣,等這個功能等了快十年了)。

原本的cygwin是沒有任何LC support的,從頭到尾都是LOCALE C。這在許多地方都造成了困擾,但是設定好一些參數,multibyte輸出/入勉強還是可以使用。
而本次1.7版在安裝之後,則不需要像之前的版本需要變更許多環境變數來支援中文的顯示和輸入,一安裝完就可以正常使用。而且cygwin內部使用utf-8處理,和系統的utf-16le(unicode)直接做了整合,日文、簡體等等也可以自由地使用。

目前家裡和工作環境都已經更換成cygwin 1.7,還沒遇到什麼新問題。不過一旦在cygwin環境中使用了dos style的path,每用一次就會顯示一大串的warning,如果不想看到的話,就乖乖修掉path,或是用set CYGWIN=nodosfilewarning 來避掉囉。

留言

  1. 请教问题。。。2010年2月3日 上午1:44

    。。我现在就是遇到了您所说的问题。

    错误内容如下:“cygwin warning:
    MS-DOS style path detected: C:/GTK/include/gtk-2.0
    Preferred POSIX equivalent is: /cygdrive/c/GTK/include/gtk-2.0
    CYGWIN environment variable option "nodosfilewarning" turns off this warning.
    Consult the user's guide for more details about POSIX paths:
    http://cygwin.com/cygwin-ug-net/using.html#using-pathnames”。

    我去那个给出的网站看了。。。全是英文,英文少了我还能看懂点。太多了,就无能为力了,希望您能指点下我。。

    回覆刪除
  2. 簡單說就是有兩個方式
    1. 把你用到C:/GTK/include/gtk-2.0這個路徑的地方改成/cygdrive/c/GTK/include/gtk-2.0
    C:變成/cygdrive/c,C: D: E: 都一樣的方法類推

    2.若只是單純不想看到警告訊息,不想改程式
    就在環境變數中加入CYGWIN=nodosfilewarning

    加入環境變數的方式很多,你可以在windows的系統內容->進階->環境變數中加入(抱歉我不曉得簡體windows的位置)
    或者你可以在cygwin.bat前面加上set CYGWIN=nodosfilewarning
    或者將此行加在你執行程式用的batch檔裡

    回覆刪除
  3. 我按照你的方法设置了环境变量,但是Netbeans6.8里C++的编译运行还是会出现warning?

    回覆刪除
  4. 那我猜是在Netbeans裡面有另外設定別的環境變數把它蓋掉了

    回覆刪除
  5. 您好,因為搜尋相關議題看到您的網頁
    知道您是Cygwin達人很開心,有類似的問題要請教。

    1. 請問這個warning只是warning,還是會有實質的影響?
    2. 我是在matlab呼叫從c files轉檔的程式,但會出現如下的錯誤訊息:
    alignlinear.c: 146: Unable to parse argument I:PVECpve_proj_2tmp_dir04_03n04_trnsf2_PET.air, which was expected to begin with a '-'

    c files之程式說明為check syntax, an argument without a flag is positioned as if were a flag

    整體看來似乎也是和這個路徑的問題有關,請問是否有建議的解決之道?

    大感謝~

    回覆刪除
  6. to 凱凱

    你的問題和路徑沒有直接的關係

    以常識來說,這個訊息代表你的轉檔程式吃的參數開頭必須是-a -b這類的,常見於unix命令列程式,要吃檔案也許要用類似像-f filename這種格式(當然,要看你那隻程式是怎麼寫的),你直接餵檔名給他,他看不懂

    回覆刪除
  7. 您好,因為搜尋相關議題看到您的網頁
    不知道你有沒有處理過 在 console 使用 print 中文無法顯示的問題.
    使用以前的 cygwin 1.5 沒有這個問題

    soop

    回覆刪除
  8. 在1.7下面,請改用utf-8來編輯程式,big5一定印不出來的

    回覆刪除
  9. 不好意思可以請您幫我把上一篇刪除嗎? 不想留信箱再上面謝謝

    回覆刪除

張貼留言

這個網誌中的熱門文章

文言文

談談台灣人使用統傳漢字的優越心態

台灣工程師常唸錯的英文單字