post by tommy @ 07 四月, 2011 14:41
雖然 ftp client 這東西, 似乎沒什麼必要特地使用 64 位元的版本, 不過.... 還是弄了一個 FileZilla win64 的版本來試看看.
patch 的部份, 可以到這兒下載, 如果有修正的 patch, 應該也會傳到那兒去. 不過最後作者接不接受這個 patch, 我就不清楚了.
而要製作出 win64 的版本, 主要有下列要注意的地方:
- c/c++ compiler: mingw64 (建議用 TDM-GCC 的版本)
- msys 的部份, 可以參考 filezilla 的 wiki 說明, 注意不要安裝任何 -dev 相關的東西, 避免使用到 32 位元的函式庫.
- 參考舊的 filezilla 編譯說明, 自行建立 64 位元的 libtool, autoconf, automake, libiconv, gettext (請抓新的版本, 不要抓那篇說明的那些舊版本).
- libgcrypt 請加上 --disable-asm 來製作, 因為 asm 部份的程式碼在 win64 使用是有問題的, 會造成程式 crash (可能是 segment fault).
- 安裝 libgpg-error 時, 執行 iconv --silence 可能會有問題, 建議改成 iconv -s (參考這篇).
- gnutls 似乎在 mingw64 下, 有些變數似乎是會變成用 unsigned 的方式來定義, 所以在 handshake 時會一直讀不到東西. 上頭的 patch 其中一個就是修正這個問題.
- wxWidgets 2.8 並沒有對 win64 做處理, 有些地方的型別轉換會造成編譯時出錯 (當然把 64 位元的指標轉成 32 位元的指標, 也許在執行時也會出問題). 所以上頭最主要的 patch 是在修正這個問題.
- FileZilla 在 resouce 的部份, processorArchitecture 指定為 x86, 要改成 * 或 amd64 才能正常運作, 否則會在執行時出現 0x000007b 的錯誤.
如果你只需要執行檔, 可以到 FileZillaPV 去抓, 如果有更新, 我應該也會傳一份上去.
如果要與 FileZilla 的作者討論這個 win64 的修正... 可以到這兒看看.
如果是自行編譯.... 在 fzshellext 的部份會出錯, 請忽略吧, 依據作者之前的說法, 64 位元的 fzshellexe 目前只能用 msvc 來產生. 所以... 直接用作者原本做的版本就可以了.