2011/6/5 補充

原文的內容已經過時而且過於雜亂無章,一些朋友無法依照原文指示完成安裝,因此最後決定刪除。有用的資訊已經併入〈 使用 mingw-get 安裝 MinGW 和 MSYS〉一文。


novus 發表在 痞客邦 PIXNET 留言(3) 人氣()


留言列表 (3)

發表留言
  • 初心者
  • 因為最近在試著手動來安裝 msys,您的說明讓我少走很多的錯路。

    在我的電腦中,為了方便使用 code::blocks,所以我把 mingw 加到 window 的 path 中,雖然我已在 msys.bat 的第一行加入 path = c:\msys\1.0\bin,來重新指定 msys 所指定的路徑,可是這樣做卻是沒有用,進 msys 後用 gcc -v 的結果來看,msys 好像仍是抓 mingw 的 path,而不是後來我指定的 path,請問我是不是什麼地方弄錯了呢?謝謝

    ps. 之前 msys 和 mingw 的版本是相同的,所以沒注意到 path 問題,只是要試著編 toolchain 時會失敗

      
  • 可能我寫得不太清楚

    建議不要用 c:\msys\1.0\bin 底下的gcc 編東西 (包含其他的cross-compiler)
    msys 預設抓 /mingw/bin 的行為比較好(所以你指定path也無影響),這樣編出來的東西才不用依賴 msys 環境,可以很方便和 windows 下其他的工具整合在一起,當然也可以在 msys 下用

    編 gcc toolchain 並不是各版本的 binutils + compiler + lib 都保證成功,看到錯誤訊息常常要手動排除

    還有如果你要編 xxx-elf-gcc toolchain,建議用抓 gcc 4.2.x 之前的版本,最好要比最新版的newlib 早半年,這樣成功率比較大。(要編c++和libstdc++的話,可能還需要手動改一些東西)

    看對你有沒有幫助
    http://novus.pixnet.net/blog/post/27123358

    novus 於 2010/09/05 19:17 回覆

  • 初心者
  • 感謝版主花了那麼多的時間來解說,我也先提供一些我發現的地方,希望不要是在專家門前賣弄小聰明。

    msys 的路徑是由 /etc/profile 所指定,其內容極可能是 export PATH=".:/usr/local/bin:/mingw/bin:/bin:$PATH",故會把 mingw 的路徑加到前面,不過因為 msys 非要使用者在 fstab 中設定 mingw的位置,所以就不要去改了。

    此外,若要讓 msys 環境中的路徑不要把含有 window 預設的 path時,可在 msys.bat 加入 set path= 即可。

    另外一方面,如果沒有經過此一討論,我還一直認為 msys 是用它自己帶的 gcc,可是這又產生一個新的疑問。

    依之前我自己嘗試編 ffmpeg 的經驗而言,即使我先在 msys 中下 ./configure 以產生 config.h,再回到 mingw 下 make 就會收敗,非要在 msys 中下make才行,網友說這是因為 ffmpeg 的 make 用了太多的 gnu 工具,所以我才需要在 msys 進行。

    而現在我的疑問則是為何我已用到了一些 mysy 環境裡的程式,為何得到的 ffmpeg 仍能在 windows 正常運行呢?畢竟 mingw/msys 都會安裝一些 GNU-Binutils,是不是只要 gcc 是 wingw 版本即可,中間那些 gnu 程式是在什麼平台就無關係了呢?
  • 在 msys 底下預設的編譯器就是 mingw,所以你建 ffmpeg 連結到的程式庫當然都來自 mingw(假如安裝正確的話)
    如果要進入 msys gcc 編譯模式必須先下切換模式的指令。因為我從來都不打算安裝 msys gcc 所以也沒關心過這個問題。

    msys的make 和 mingw的make 最大的差別在於,前者認得 POSIX 目錄結構,而後者則對 POSIX 目錄結構一無所知。

    至於網友所說依賴 GNU 工具指的是像 cp, rm, mkdir, grep, awk 等等系統工具,而不是會被連進執行檔的程式庫。

    如果有用到程式庫(如 pthread、gmp) 應該要用 mingw 的而非 msys 的程式庫,雖然msys和mingw有蠻高的機率可以互通,如文中所述的 libfl.a。但其他平台絕對沒這麼容易

    novus 於 2010/09/07 01:51 回覆

  • 初心者
  • 感謝萬分,這下又增加我許多的功力。