Tommy 碎碎念

Tommy Wu's blog

MinGW 使用 gcc 4.5.x 產生的執行檔需要 libgcc_s_dw2-1.dll 與 libstdc++-6.dll 才能執行?
post by tommy @ 24 三月, 2011 15:14

這兩天為了編譯 SciTE (以前都是 VC++ 來編譯), 所以把使用的 MinGWgcc 升級到 4.5.x, 結果, 發現產生的執行檔在執行的時候, 需要 libgcc_s_dw2-1.dll 與 libstdc++-6.dll 才能運作. 網路上查了一下, 發現 gcc 4.5 預設對所有函式庫的連結方式都改成動態連結, 所以做出來的執行檔依據所使用到的函式庫, 往往會需要一些原本不存在 Windows 系統的 dll 才能正常運作.

 (閱讀全文)

Del.icio.us Furl HEMiDEMi Technorati MyShare
MSYS 的 iconv.exe --silent 無法正常運作?
post by tommy @ 24 三月, 2011 13:18

這幾天把我用來編譯 filezilla3MinGW/MSYS 環境改成 gcc 4.5.x (之前是用 gcc 3.4.5), 結果在處理 libgpg-error 時, 會停在這個訊息:

make[3]: Entering directory `/usr/src/libgpg-error-1.10'
set -e; \
for i in $(./potomo --get-linguas ./po); do \
/bin/mkdir -p "/usr/local/share/locale/$i/LC_MESSAGES" || true; \
rm -f "/usr/local/share/locale/$i/LC_MESSAGES/libgpg-error.mo" \
2>/dev/null || true; \
./potomo ./po/$i.po \
"/usr/local/share/locale/$i/LC_MESSAGES/libgpg-error.mo" ; \
done
potomo: '
./po/cs.po' keeping UTF-8
potomo: '
./po/de.po' keeping UTF-8
potomo: '
./po/fr.po' keeping UTF-8
potomo: '
./po/it.po' keeping UTF-8
potomo: '
./po/nl.po' keeping UTF-8
potomo: '
./po/pl.po' converting from ISO-8859-2 to utf-8

查看一下執行的指令, 應該是執行 iconv.exe (會一直使用約 12% 左右的 CPU), 放著不管跑一晚上, 也跑不出結果.

potomo 是一個 bash 的 script, 所以看了一下這地方是處理是:

case "$fromset" in 
utf8|utf-8|UTF8|UTF-8)
echo "potomo: '$infile' keeping $fromset" >&2
msgfmt --output-file="$outfile" "$infile"
;;
*)
echo "potomo: '$infile' converting from $fromset to utf-8" >&2
iconv --silent --from-code=$fromset --to-code=utf-8 < "$infile" |\
sed "/^\"Content-Type:/ s/charset=[a-zA-Z0-9_-]*/charset=utf-8/"|\
msgfmt --output-file="$outfile" -
;;
esac

試著自己把那個 iconv 指令, 果然會停住. 試了一下, 把 --silent 拿掉就正常. 看一下 iconv --help 的說明, --silent 與 -s 是一樣的意思. 同一個指令, 改用 -s 來取代 --silent, 結果居然可以正常執行. 真是一個奇怪的問題.

如果你有碰到 iconv 跑不出來的問題, 可以看看有沒有用到 --silent 吧, 改用 -s 試看看吧.

Del.icio.us Furl HEMiDEMi Technorati MyShare
Bad Behavior 已經阻擋了 53 個過去 7 天試圖闖關的垃圾迴響與引用。
Power by LifeType. Template design by JamesHuang. Valid XHTML and CSS