난 한RSS리더를 사용한다.
다르게 말하자면 항상 파이어폭스를 켜놓고 산다.
그러다 보면 이넘의 불여우가 간을 빼먹는게 아니라 메모리를 빼먹는다 ㄱ-
매너없는 메모리. 최고 350MB 까지 가봤음
그래서 부랴부랴 검색을 해서 부가기능에서 memory 키워드로 검색해서 별이 가장 많은 AFOM을 설치했다.
머.. 벤치마킹 이런건 모르겠지만, 체감적으로 상당히 부드러워졌고 메모리가 120MB를 넘어서면 정리를 해서 8MB 까지 떨어지고 다시 또 차오르고를 반복한다.
조금은 더 오래 써봐야 알겠지만, 생각보다 쓸만해 보인다.
2010.06.03 추가
주말에 집에서 사용해보니, 노트북에서는 조금 버벅대는 감이있다.
꾸준히 약간 버벅대냐, 한번 대박으로 버벅대냐의 차이일려나? ^^;
노트북은 센트리노 1.2Ghz / 1GB 이다.
뜬금없는 이야기지만, 일단 iconv는 libc 를 이용한다.
그런데 이 넘은 실제로 /usr/lib/gconv/*.so 파일들을 사용한다.
아무튼, 이 넘들이 없으면 에러는 안나지만 변환이 안된다.
(임베디드에서 iconv 쓰는데 변환이 안되서 찾은 문제)
# ll -h /usr/lib/gconv/ total 7.2M
-rwxr-xr-x 1 root root 22K Oct 9 2006 ANSI_X3.110.so
-rwxr-xr-x 1 root root 9.4K Oct 9 2006 ARMSCII-8.so
-rwxr-xr-x 1 root root 9.4K Oct 9 2006 ASMO_449.so
-rwxr-xr-x 1 root root 218K Oct 9 2006 BIG5HKSCS.so
-rwxr-xr-x 1 root root 82K Oct 9 2006 BIG5.so
-rwxr-xr-x 1 root root 9.4K Oct 9 2006 CP10007.so
-rwxr-xr-x 1 root root 9.4K Oct 9 2006 CP1125.so
-rwxr-xr-x 1 root root 9.4K Oct 9 2006 CP1250.so
-rwxr-xr-x 1 root root 9.4K Oct 9 2006 CP1251.so
-rwxr-xr-x 1 root root 9.4K Oct 9 2006 CP1252.so
-rwxr-xr-x 1 root root 9.4K Oct 9 2006 CP1253.so
-rwxr-xr-x 1 root root 9.4K Oct 9 2006 CP1254.so
-rwxr-xr-x 1 root root 14K Oct 9 2006 CP1255.so
-rwxr-xr-x 1 root root 9.4K Oct 9 2006 CP1256.so
-rwxr-xr-x 1 root root 9.4K Oct 9 2006 CP1257.so
-rwxr-xr-x 1 root root 14K Oct 9 2006 CP1258.so
-rwxr-xr-x 1 root root 9.5K Oct 9 2006 CP737.so
-rwxr-xr-x 1 root root 9.6K Oct 9 2006 CP775.so
-rwxr-xr-x 1 root root 94K Oct 9 2006 CP932.so
-rwxr-xr-x 1 root root 9.4K Oct 9 2006 CSN_369103.so
-rwxr-xr-x 1 root root 9.4K Oct 9 2006 CWI.so
-rwxr-xr-x 1 root root 9.4K Oct 9 2006 DEC-MCS.so
-rwxr-xr-x 1 root root 9.4K Oct 9 2006 EBCDIC-AT-DE-A.so
-rwxr-xr-x 1 root root 9.4K Oct 9 2006 EBCDIC-AT-DE.so
-rwxr-xr-x 1 root root 9.4K Oct 9 2006 EBCDIC-CA-FR.so
-rwxr-xr-x 1 root root 9.4K Oct 9 2006 EBCDIC-DK-NO-A.so
-rwxr-xr-x 1 root root 9.4K Oct 9 2006 EBCDIC-DK-NO.so
-rwxr-xr-x 1 root root 18K Oct 9 2006 EBCDIC-ES-A.so
-rwxr-xr-x 1 root root 18K Oct 9 2006 EBCDIC-ES.so
-rwxr-xr-x 1 root root 9.4K Oct 9 2006 EBCDIC-ES-S.so
-rwxr-xr-x 1 root root 9.4K Oct 9 2006 EBCDIC-FI-SE-A.so
-rwxr-xr-x 1 root root 9.4K Oct 9 2006 EBCDIC-FI-SE.so
-rwxr-xr-x 1 root root 9.4K Oct 9 2006 EBCDIC-FR.so
-rwxr-xr-x 1 root root 18K Oct 9 2006 EBCDIC-IS-FRISS.so
-rwxr-xr-x 1 root root 9.4K Oct 9 2006 EBCDIC-IT.so
-rwxr-xr-x 1 root root 9.4K Oct 9 2006 EBCDIC-PT.so
-rwxr-xr-x 1 root root 18K Oct 9 2006 EBCDIC-UK.so
-rwxr-xr-x 1 root root 9.4K Oct 9 2006 EBCDIC-US.so
-rwxr-xr-x 1 root root 9.4K Oct 9 2006 ECMA-CYRILLIC.so
-rwxr-xr-x 1 root root 14K Oct 9 2006 EUC-CN.so
-rwxr-xr-x 1 root root 14K Oct 9 2006 EUC-JISX0213.so
-rwxr-xr-x 1 root root 82K Oct 9 2006 EUC-JP-MS.so
-rwxr-xr-x 1 root root 14K Oct 9 2006 EUC-JP.so
-rwxr-xr-x 1 root root 9.4K Oct 9 2006 EUC-KR.so
-rwxr-xr-x 1 root root 22K Oct 9 2006 EUC-TW.so
-rwxr-xr-x 1 root root 178K Oct 9 2006 GB18030.so
-rwxr-xr-x 1 root root 54K Oct 9 2006 GBBIG5.so
-rwxr-xr-x 1 root root 9.4K Oct 9 2006 GBGBK.so
-rwxr-xr-x 1 root root 110K Oct 9 2006 GBK.so
-rw-r--r-- 1 root root 54K Oct 8 2006 gconv-modules
-rw-r--r-- 1 root root 25K Feb 16 13:23 gconv-modules.cache
-rwxr-xr-x 1 root root 9.4K Oct 9 2006 GEORGIAN-ACADEMY.so
-rwxr-xr-x 1 root root 9.4K Oct 9 2006 GEORGIAN-PS.so
-rwxr-xr-x 1 root root 9.4K Oct 9 2006 GOST_19768-74.so
-rwxr-xr-x 1 root root 9.4K Oct 9 2006 GREEK7-OLD.so
-rwxr-xr-x 1 root root 9.4K Oct 9 2006 GREEK7.so
-rwxr-xr-x 1 root root 9.4K Oct 9 2006 GREEK-CCITT.so
-rwxr-xr-x 1 root root 18K Oct 9 2006 HP-ROMAN8.so
-rwxr-xr-x 1 root root 9.4K Oct 9 2006 IBM037.so
-rwxr-xr-x 1 root root 9.4K Oct 9 2006 IBM038.so
-rwxr-xr-x 1 root root 9.4K Oct 9 2006 IBM1004.so
-rwxr-xr-x 1 root root 5.4K Oct 9 2006 IBM1008_420.so
-rwxr-xr-x 1 root root 9.4K Oct 9 2006 IBM1008.so
-rwxr-xr-x 1 root root 9.4K Oct 9 2006 IBM1025.so
-rwxr-xr-x 1 root root 9.4K Oct 9 2006 IBM1026.so
-rwxr-xr-x 1 root root 9.4K Oct 9 2006 IBM1046.so
-rwxr-xr-x 1 root root 9.4K Oct 9 2006 IBM1047.so
-rwxr-xr-x 1 root root 9.4K Oct 9 2006 IBM1097.so
-rwxr-xr-x 1 root root 9.4K Oct 9 2006 IBM1112.so
-rwxr-xr-x 1 root root 9.4K Oct 9 2006 IBM1122.so
-rwxr-xr-x 1 root root 9.4K Oct 9 2006 IBM1123.so
-rwxr-xr-x 1 root root 9.4K Oct 9 2006 IBM1124.so
-rwxr-xr-x 1 root root 9.4K Oct 9 2006 IBM1129.so
-rwxr-xr-x 1 root root 9.4K Oct 9 2006 IBM1130.so
-rwxr-xr-x 1 root root 9.4K Oct 9 2006 IBM1132.so
-rwxr-xr-x 1 root root 9.4K Oct 9 2006 IBM1133.so
-rwxr-xr-x 1 root root 9.4K Oct 9 2006 IBM1137.so
-rwxr-xr-x 1 root root 9.4K Oct 9 2006 IBM1140.so
-rwxr-xr-x 1 root root 9.4K Oct 9 2006 IBM1141.so
-rwxr-xr-x 1 root root 9.4K Oct 9 2006 IBM1142.so
-rwxr-xr-x 1 root root 9.4K Oct 9 2006 IBM1143.so
-rwxr-xr-x 1 root root 9.4K Oct 9 2006 IBM1144.so
-rwxr-xr-x 1 root root 9.4K Oct 9 2006 IBM1145.so
-rwxr-xr-x 1 root root 9.4K Oct 9 2006 IBM1146.so
-rwxr-xr-x 1 root root 9.4K Oct 9 2006 IBM1147.so
-rwxr-xr-x 1 root root 9.4K Oct 9 2006 IBM1148.so
-rwxr-xr-x 1 root root 9.4K Oct 9 2006 IBM1149.so
-rwxr-xr-x 1 root root 9.4K Oct 9 2006 IBM1153.so
-rwxr-xr-x 1 root root 9.4K Oct 9 2006 IBM1154.so
-rwxr-xr-x 1 root root 9.4K Oct 9 2006 IBM1155.so
-rwxr-xr-x 1 root root 9.4K Oct 9 2006 IBM1156.so
-rwxr-xr-x 1 root root 9.4K Oct 9 2006 IBM1157.so
-rwxr-xr-x 1 root root 9.4K Oct 9 2006 IBM1158.so
-rwxr-xr-x 1 root root 9.4K Oct 9 2006 IBM1160.so
-rwxr-xr-x 1 root root 9.4K Oct 9 2006 IBM1161.so
-rwxr-xr-x 1 root root 9.4K Oct 9 2006 IBM1162.so
-rwxr-xr-x 1 root root 9.4K Oct 9 2006 IBM1163.so
-rwxr-xr-x 1 root root 9.4K Oct 9 2006 IBM1164.so
-rwxr-xr-x 1 root root 9.4K Oct 9 2006 IBM1166.so
-rwxr-xr-x 1 root root 9.4K Oct 9 2006 IBM1167.so
-rwxr-xr-x 1 root root 9.4K Oct 9 2006 IBM12712.so
-rwxr-xr-x 1 root root 146K Oct 9 2006 IBM1364.so
-rwxr-xr-x 1 root root 122K Oct 9 2006 IBM1371.so
-rwxr-xr-x 1 root root 166K Oct 9 2006 IBM1388.so
-rwxr-xr-x 1 root root 222K Oct 9 2006 IBM1390.so
-rwxr-xr-x 1 root root 222K Oct 9 2006 IBM1399.so
-rwxr-xr-x 1 root root 9.4K Oct 9 2006 IBM16804.so
-rwxr-xr-x 1 root root 9.4K Oct 9 2006 IBM256.so
-rwxr-xr-x 1 root root 9.4K Oct 9 2006 IBM273.so
-rwxr-xr-x 1 root root 9.4K Oct 9 2006 IBM274.so
-rwxr-xr-x 1 root root 9.4K Oct 9 2006 IBM275.so
-rwxr-xr-x 1 root root 9.4K Oct 9 2006 IBM277.so
-rwxr-xr-x 1 root root 9.4K Oct 9 2006 IBM278.so
-rwxr-xr-x 1 root root 9.4K Oct 9 2006 IBM280.so
-rwxr-xr-x 1 root root 9.4K Oct 9 2006 IBM281.so
-rwxr-xr-x 1 root root 9.4K Oct 9 2006 IBM284.so
-rwxr-xr-x 1 root root 9.4K Oct 9 2006 IBM285.so
-rwxr-xr-x 1 root root 9.4K Oct 9 2006 IBM290.so
-rwxr-xr-x 1 root root 9.4K Oct 9 2006 IBM297.so
-rwxr-xr-x 1 root root 9.4K Oct 9 2006 IBM420.so
-rwxr-xr-x 1 root root 9.4K Oct 9 2006 IBM423.so
-rwxr-xr-x 1 root root 9.4K Oct 9 2006 IBM424.so
-rwxr-xr-x 1 root root 9.4K Oct 9 2006 IBM437.so
-rwxr-xr-x 1 root root 9.4K Oct 9 2006 IBM4517.so
-rwxr-xr-x 1 root root 9.4K Oct 9 2006 IBM4899.so
-rwxr-xr-x 1 root root 9.4K Oct 9 2006 IBM4909.so
-rwxr-xr-x 1 root root 9.4K Oct 9 2006 IBM4971.so
-rwxr-xr-x 1 root root 9.4K Oct 9 2006 IBM500.so
-rwxr-xr-x 1 root root 9.4K Oct 9 2006 IBM5347.so
-rwxr-xr-x 1 root root 9.4K Oct 9 2006 IBM803.so
-rwxr-xr-x 1 root root 9.4K Oct 9 2006 IBM850.so
-rwxr-xr-x 1 root root 9.4K Oct 9 2006 IBM851.so
-rwxr-xr-x 1 root root 9.4K Oct 9 2006 IBM852.so
-rwxr-xr-x 1 root root 9.4K Oct 9 2006 IBM855.so
-rwxr-xr-x 1 root root 9.4K Oct 9 2006 IBM856.so
-rwxr-xr-x 1 root root 9.4K Oct 9 2006 IBM857.so
-rwxr-xr-x 1 root root 9.4K Oct 9 2006 IBM860.so
-rwxr-xr-x 1 root root 9.4K Oct 9 2006 IBM861.so
-rwxr-xr-x 1 root root 9.4K Oct 9 2006 IBM862.so
-rwxr-xr-x 1 root root 9.4K Oct 9 2006 IBM863.so
-rwxr-xr-x 1 root root 9.4K Oct 9 2006 IBM864.so
-rwxr-xr-x 1 root root 9.4K Oct 9 2006 IBM865.so
-rwxr-xr-x 1 root root 9.4K Oct 9 2006 IBM866NAV.so
-rwxr-xr-x 1 root root 9.4K Oct 9 2006 IBM866.so
-rwxr-xr-x 1 root root 9.4K Oct 9 2006 IBM868.so
-rwxr-xr-x 1 root root 9.4K Oct 9 2006 IBM869.so
-rwxr-xr-x 1 root root 9.4K Oct 9 2006 IBM870.so
-rwxr-xr-x 1 root root 9.4K Oct 9 2006 IBM871.so
-rwxr-xr-x 1 root root 9.4K Oct 9 2006 IBM874.so
-rwxr-xr-x 1 root root 9.4K Oct 9 2006 IBM875.so
-rwxr-xr-x 1 root root 9.4K Oct 9 2006 IBM880.so
-rwxr-xr-x 1 root root 9.4K Oct 9 2006 IBM891.so
-rwxr-xr-x 1 root root 9.4K Oct 9 2006 IBM901.so
-rwxr-xr-x 1 root root 9.4K Oct 9 2006 IBM902.so
-rwxr-xr-x 1 root root 9.4K Oct 9 2006 IBM9030.so
-rwxr-xr-x 1 root root 9.4K Oct 9 2006 IBM903.so
-rwxr-xr-x 1 root root 9.4K Oct 9 2006 IBM904.so
-rwxr-xr-x 1 root root 9.4K Oct 9 2006 IBM905.so
-rwxr-xr-x 1 root root 9.4K Oct 9 2006 IBM9066.so
-rwxr-xr-x 1 root root 9.4K Oct 9 2006 IBM918.so
-rwxr-xr-x 1 root root 9.4K Oct 9 2006 IBM921.so
-rwxr-xr-x 1 root root 9.4K Oct 9 2006 IBM922.so
-rwxr-xr-x 1 root root 94K Oct 9 2006 IBM930.so
-rwxr-xr-x 1 root root 66K Oct 9 2006 IBM932.so
-rwxr-xr-x 1 root root 114K Oct 9 2006 IBM933.so
-rwxr-xr-x 1 root root 82K Oct 9 2006 IBM935.so
-rwxr-xr-x 1 root root 110K Oct 9 2006 IBM937.so
-rwxr-xr-x 1 root root 94K Oct 9 2006 IBM939.so
-rwxr-xr-x 1 root root 66K Oct 9 2006 IBM943.so
-rwxr-xr-x 1 root root 9.4K Oct 9 2006 IBM9448.so
-rwxr-xr-x 1 root root 9.4K Oct 9 2006 IEC_P27-1.so
-rwxr-xr-x 1 root root 9.4K Oct 9 2006 INIS-8.so
-rwxr-xr-x 1 root root 9.4K Oct 9 2006 INIS-CYRILLIC.so
-rwxr-xr-x 1 root root 9.4K Oct 9 2006 INIS.so
-rwxr-xr-x 1 root root 9.4K Oct 9 2006 ISIRI-3342.so
-rwxr-xr-x 1 root root 9.4K Oct 9 2006 ISO_10367-BOX.so
-rwxr-xr-x 1 root root 5.4K Oct 9 2006 ISO_11548-1.so
-rwxr-xr-x 1 root root 38K Oct 9 2006 ISO-2022-CN-EXT.so
-rwxr-xr-x 1 root root 26K Oct 9 2006 ISO-2022-CN.so
-rwxr-xr-x 1 root root 22K Oct 9 2006 ISO-2022-JP-3.so
-rwxr-xr-x 1 root root 34K Oct 9 2006 ISO-2022-JP.so
-rwxr-xr-x 1 root root 14K Oct 9 2006 ISO-2022-KR.so
-rwxr-xr-x 1 root root 9.4K Oct 9 2006 ISO_2033.so
-rwxr-xr-x 1 root root 9.4K Oct 9 2006 ISO_5427-EXT.so
-rwxr-xr-x 1 root root 9.4K Oct 9 2006 ISO_5427.so
-rwxr-xr-x 1 root root 9.4K Oct 9 2006 ISO_5428.so
-rwxr-xr-x 1 root root 22K Oct 9 2006 ISO646.so
-rwxr-xr-x 1 root root 18K Oct 9 2006 ISO_6937-2.so
-rwxr-xr-x 1 root root 18K Oct 9 2006 ISO_6937.so
-rwxr-xr-x 1 root root 9.4K Oct 9 2006 ISO8859-10.so
-rwxr-xr-x 1 root root 9.4K Oct 9 2006 ISO8859-11.so
-rwxr-xr-x 1 root root 9.4K Oct 9 2006 ISO8859-13.so
-rwxr-xr-x 1 root root 9.4K Oct 9 2006 ISO8859-14.so
-rwxr-xr-x 1 root root 9.4K Oct 9 2006 ISO8859-15.so
-rwxr-xr-x 1 root root 18K Oct 9 2006 ISO8859-16.so
-rwxr-xr-x 1 root root 5.4K Oct 9 2006 ISO8859-1.so
-rwxr-xr-x 1 root root 9.4K Oct 9 2006 ISO8859-2.so
-rwxr-xr-x 1 root root 9.4K Oct 9 2006 ISO8859-3.so
-rwxr-xr-x 1 root root 9.4K Oct 9 2006 ISO8859-4.so
-rwxr-xr-x 1 root root 9.4K Oct 9 2006 ISO8859-5.so
-rwxr-xr-x 1 root root 9.4K Oct 9 2006 ISO8859-6.so
-rwxr-xr-x 1 root root 9.4K Oct 9 2006 ISO8859-7.so
-rwxr-xr-x 1 root root 9.4K Oct 9 2006 ISO8859-8.so
-rwxr-xr-x 1 root root 9.4K Oct 9 2006 ISO8859-9.so
-rwxr-xr-x 1 root root 9.4K Oct 9 2006 ISO-IR-197.so
-rwxr-xr-x 1 root root 9.4K Oct 9 2006 ISO-IR-209.so
-rwxr-xr-x 1 root root 14K Oct 9 2006 JOHAB.so
-rwxr-xr-x 1 root root 9.4K Oct 9 2006 KOI8-R.so
-rwxr-xr-x 1 root root 9.4K Oct 9 2006 KOI-8.so
-rwxr-xr-x 1 root root 9.4K Oct 9 2006 KOI8-T.so
-rwxr-xr-x 1 root root 9.4K Oct 9 2006 KOI8-U.so
-rwxr-xr-x 1 root root 9.4K Oct 9 2006 LATIN-GREEK-1.so
-rwxr-xr-x 1 root root 9.4K Oct 9 2006 LATIN-GREEK.so
-rwxr-xr-x 1 root root 454K Oct 9 2006 libCNS.so
-rwxr-xr-x 1 root root 66K Oct 9 2006 libGB.so
-rwxr-xr-x 1 root root 58K Oct 9 2006 libISOIR165.so
-rwxr-xr-x 1 root root 98K Oct 9 2006 libJIS.so
-rwxr-xr-x 1 root root 118K Oct 9 2006 libJISX0213.so
-rwxr-xr-x 1 root root 46K Oct 9 2006 libKSC.so
-rwxr-xr-x 1 root root 9.4K Oct 9 2006 MACINTOSH.so
-rwxr-xr-x 1 root root 9.4K Oct 9 2006 MAC-IS.so
-rwxr-xr-x 1 root root 9.4K Oct 9 2006 MAC-SAMI.so
-rwxr-xr-x 1 root root 9.4K Oct 9 2006 MAC-UK.so
-rwxr-xr-x 1 root root 9.4K Oct 9 2006 MIK.so
-rwxr-xr-x 1 root root 9.4K Oct 9 2006 NATS-DANO.so
-rwxr-xr-x 1 root root 9.4K Oct 9 2006 NATS-SEFI.so
-rwxr-xr-x 1 root root 9.4K Oct 9 2006 PT154.so
-rwxr-xr-x 1 root root 9.4K Oct 9 2006 RK1048.so
-rwxr-xr-x 1 root root 9.4K Oct 9 2006 SAMI-WS2.so
-rwxr-xr-x 1 root root 14K Oct 9 2006 SHIFT_JISX0213.so
-rwxr-xr-x 1 root root 90K Oct 9 2006 SJIS.so
-rwxr-xr-x 1 root root 18K Oct 9 2006 T.61.so
-rwxr-xr-x 1 root root 14K Oct 9 2006 TCVN5712-1.so
-rwxr-xr-x 1 root root 9.4K Oct 9 2006 TIS-620.so
-rwxr-xr-x 1 root root 18K Oct 9 2006 TSCII.so
-rwxr-xr-x 1 root root 70K Oct 9 2006 UHC.so
-rwxr-xr-x 1 root root 9.4K Oct 9 2006 UNICODE.so
-rwxr-xr-x 1 root root 9.4K Oct 9 2006 UTF-16.so
-rwxr-xr-x 1 root root 9.4K Oct 9 2006 UTF-32.so
-rwxr-xr-x 1 root root 18K Oct 9 2006 UTF-7.so
-rwxr-xr-x 1 root root 18K Oct 9 2006 VISCII.so
strace를 해보니
gconv-module은 /usr/lib/gconv-modules에서 잘 open 했는데 EUC-KR.so 를 open 한 후
libc.so.6와 ld-linux.so.2를 찾네요, 저는 shared library를 안쓰고 있는데 ㅠㅠ 그래서 위 두 파일을
ramdisk/usr/lib 에 복사해 넣은 후 TARGET에서 다시 iconv sample 프로그램을 돌려보니 이제는 정상
동작 합니다.
음.. 그래서 일단은 libc*로 파일들을 검색해보니 "libc.so" 가 없다.
so 라길레 파일 용량을 보니 저렴한 238Byte. 그래서 cat으로 해보니 텍스트 파일이다.
>>> x86 리눅스의 libc.so 내용
# cat /usr/lib/libc.so
/* GNU ld script
Use the shared library, but some functions are only in
the static library, so try that secondarily. */
OUTPUT_FORMAT(elf32-i386)
GROUP ( /lib/libc.so.6 /usr/lib/libc_nonshared.a AS_NEEDED ( /lib/ld-linux.so.2 ) )
>>> sh4 리눅스의 libc.so 내용
]# cat usr/lib/libc.so
/* GNU ld script
Use the shared library, but some functions are only in
the static library, so try that secondarily. */
OUTPUT_FORMAT(elf32-sh-linux)
GROUP ( libc.so.6 libc_nonshared.a AS_NEEDED ( /lib/ld-linux.so.2 ) )
수동으로 crt 코드와 libc를 링크시켜 줍니다. 여기까지 해서 동작을 잘 해야 하는데, 컴파일/링킹 워닝이나 에러가 안나지만
프로그램이 동작하지 않습니다.
$ readelf -l test
...
INTERP 0x000114 0x08048114 0x08048114 0x00013 0x00013 R 0x1
[Requesting program interpreter: /usr/lib/libc.so.1]
...
dynamic
linker를 시스템 기본값인 /usr/lib/libc.so.1로 지정하는데, 문제는 시스템에는 해당 파일이 없습니다--;
마찬가지 방법으로 /bin/ls의 INTERP 섹션을 읽어보니까 INTERP는 /lib/ld-linux.so.2로 되어 있네요.
위에서 /usr/lib/libc.so.1 은 없고 /usr/lib/libc.so는 있는데, 이 파일의 내용은 다음과 같습니다.
$ cat /usr/lib/libc.so
/* GNU ld script
Use the
shared library, but some functions are only in
the static library,
so try that secondarily. */
OUTPUT_FORMAT(elf32-i386)
GROUP (
/lib/libc.so.6 /usr/lib/libc_nonshared.a AS_NEEDED ( /lib/ld-linux.so.2
) )
libfreetype은 freetype 프로젝트의 부산물(?)이며, 이녀석은 글꼴을 그려주는 라이브러리이다.
By default, FreeType 2 supports the following font
formats.
TrueType fonts (and collections)
Type 1 fonts
CID-keyed Type 1 fonts
CFF fonts
OpenType fonts (both TrueType and CFF variants)
SFNT-based bitmap fonts
X11 PCF fonts
Windows FNT fonts
BDF fonts (including anti-aliased ones)
PFR fonts
Type 42 fonts (limited support)
보다시피 거의 모든 폰트를 지원하며, 벡터/TrueType 폰트/외곽선 폰트 및 비트맵 폰트를 지원한다.
말이 복잡하지만, 간단하게 말해서 확대해도 안깨지는 글꼴과 확대하면 깨지는 글꼴을 지원한다.
그리고 두가지 라이센스를 제공한다. 머 BSD-like 가 GPL보다는 숨통이 트이니 사용자 입장에서는 좋긴하다.
FreeType 2 is released under two open-source licenses: our own
BSD-like FreeType
License and the GPL.
아무튼, 애플에서 이러한 힌팅기술에 대한 특허를 가지고 있으므로
특허권에 의해서 patented bytecode를 무시하여 약간은 부드럽지 못하게 나온다고 한다.
(아래의 사진을 보면 K R W Z 가 약간 깨어져 보인다.)
What Is Patented
It is important to clarify that the patents only cover a small subset of the TrueType instructions (not the whole process of hinting glyphs with specific bytecode programs). Unfortunately, the patented bytecodes are relatively often used in high-quality glyph programs.
For example, here is a picture showing the ‘Arial’ font with a specific version of the FreeType bytecode interpreter that simply ignores the patented bytecodes.
As you can see, some rather unpleasant artifacts make the font unacceptable for normal reading use.
Is FreeType 2 Affected by the Patents?
The answer is no for any recent build of FreeType 2, since it comes with an ‘auto-hinting’ module that was specifically designed to completely ignore the TrueType bytecode instructions.
However, the source code for the bytecode interpreter is still available and can be toggled on at compile time, for those that want to use it anyway (because they purchased a license from Apple, or because they are in a country where the patents do not apply, etc.). For details please check the documentation that comes with your FreeType source package (it normally involves changing one configuration macro).
Note that some beta versions of FreeType 2 did use the bytecode interpreter (since the auto-hinter wasn't available yet).
Finally, many Linux distributions seem to distribute a patched version of FreeType 2 with the bytecode interpreter activated, unlike the sources we distribute. Of course, we can only deny any kind of responsibility in this case. It further means that in the event where you need to update the version of FreeType installed on your system from our sources, you should better manually activate the bytecode interpreter at compile time in order to prevent any loss of quality.
트루타입(TrueType)은 외곽선 글꼴표준으로, 1980년대 말에 애플 컴퓨터가 어도비의 포스트스크립트에 쓰이는 타입 1 글꼴에 대항하기 위해 개발하였다.
트루타입의 주된 이점은 글꼴 개발자들에게 글꼴이 다양한 글꼴 크기에서 어떻게 표시될 것인지에 대한 높은 수준의 제어를 할 수
있다는 것이며 이를 힌팅기술 혹은 힌팅 인스트럭션이라고 한다.
결론만 간단히 내자면, insight 컴파일시 환경설정에 따라서, target/TCP target/Serial이 추가된다.
그러니 신경쓰지 말고
GDBServer/TCP 나 Remote/TCP 둘중에 하나 골라서 쓰면된다.
Selecting a Target
Selecting a target involves choosing a target for debugging and setting connection interface options for the target.
Common targets include: "Exec" for native debuggers, "Remote/Serial" for establishing a connection to a target board via a serial line, "Remote/TCP" for TCP connections, and "Simulator" for connections to the simulator. There may be more depending on the configuration of the debugger being used.
In general, "remote" targets are always serial connections which require the user to specify the serial port and baud rate to be used for the connection and "remote/tcp" targets are always TCP connections which require specifying the hostname and port number of the machine to which to connect. Depending upon configuration, there may be numerous serial- and TCP-based connections. These always follow the naming convention target/Serial and target/TCP.
To select a target, choose one of the available targets from the dropdown menu in the Connection Frame. Then specify the interface options for this target: selecting the baudrate and serial port from the dropdown menus (serial targets only) or entering the hostname and port number (TCP targets only).
WARNING: `makeinfo' is missing on your system. You should only need it if
you modified a `.texi' or `.texinfo' file, or any other file
indirectly affecting the aspect of the manual. The spurious
call might also be the consequence of using a buggy `make' (AIX,
DU, IRIX). You might want to install the `Texinfo' package or
the `GNU make' package. Grab either from any GNU archive site.
$ makeinfo
'makeinfo' 프로그램은 현재 설치되어 있지 않습니다. 다음을 입력하여 이를 설치할 수 있습니다:
sudo apt-get install texinfo
머.. texinfo 패지키를 깔면 해결된다.
그리고, make distcelan 이후 다시 configure를 하고 해주니, 요런 에러가 발생한다.
gcc -c -g -O2 -I. -I.././gdb -I.././gdb/config -DLOCALEDIR="\"/usr/local/share/locale\"" -DHAVE_CONFIG_H -I.././gdb/../include/opcode -I.././gdb/../readline/.. -I../bfd -I.././gdb/../bfd -I.././gdb/../include -I../libdecnumber -I.././gdb/../libdecnumber -DMI_OUT=1 -DGDBTK -DTUI=1 -Wall -Wdeclaration-after-statement -Wpointer-arith -Wformat-nonliteral -Wno-pointer-sign -Wno-unused -Wno-switch -Wno-char-subscripts -Werror linux-nat.c
cc1: warnings being treated as errors
linux-nat.c: In function ‘linux_nat_info_proc_cmd’:
linux-nat.c:2879: error: ignoring return value of ‘fgets’, declared with attribute warn_unused_result
gdb/Makefile 에서 -Werror 부분을 주석처리 해준다.
WARNING: `bison' missing on your system. You should only need it if
you modified a `.y' file. You may need the `Bison' package
in order for those modifications to take effect. You can get
`Bison' from any GNU archive site.
gdbserver는 gdb를 돌릴만한 사정이 안되는 시스템을 위한 프로그램으로
단순하게 gdb의 앞단에서 데이터를 TCP나 시리얼 등으로 전송해 주는 역활을 한다.
그런 이유로 gdbserver 만으로는 아무런 것도 할수 없으며
크로스 컴파일 환경이라면, 내부적으로 크로스 환경에 맞추어진 gdb가 별도로 존재해야 한다.
gdbserver는 아래와 같이 host:port 식으로 선언을 하는데 현재까지는 host는 무시를 하고 port만을 받아들인다고 한다.
To use a TCP
connection instead of a serial line:
target> gdbserver host:2345 emacs foo.txt
The only difference from the previous example is the first argument,
specifying that you are communicating with the host gdb via TCP. The
`host:2345' argument means that gdbserver is to expect a TCP connection
from machine `host' to local TCP port 2345. (Currently, the `host' part
is ignored.)
그리고 gdb 쪽에서는 target remote 라는 명령어를 통해 접속이 가능하며, 기본값으로는 TCP로 접속하도록 되어있다.
target remote host:port target remote tcp:host:port
Debug using a TCP connection to port on host. The host may be either a host name or a numeric IP address; port must be a decimal number. The host could be the target machine itself, if it is directly connected to the net, or it might be a terminal server which in turn has a serial line to the target.
target remote udp:host:port
Debug using UDP packets to port on host. For example, to connect to UDP port 2828 on a terminal server named manyfarms:
target remote udp:manyfarms:2828
When using a UDP connection for remote debugging, you should keep in mind that the `U' stands for “Unreliable”. UDP can silently drop packets on busy or unreliable networks, which will cause havoc with your debugging session.