Linux2010. 6. 1. 10:52
strip *

이렇게 하면 한 디렉토리의 모든 파일을 알아서 strip 한다.
왜 이렇게 간단한걸 몰랐을까 ㅠ.ㅠ

strip [-F bfdname |--target=bfdname] [-I  bfdname |--input-target=bfdname] [-O bfdname |--output-target=bfdname] [-s|--strip-all] [-S|-g|-d|--strip-debug] [-K symbolname |--keep-symbol=symbolname] [-N symbolname |--strip-symbol=symbolname] [-w|--wildcard] [-x|--discard-all] [-X |--discard-locals] [-R sectionname |--remove-section=sectionname] [-o  file] [-p|--preserve-dates] [--keep-file-symbols] [--only-keep-debug] [-v |--verbose] [-V|--version] [--help] [--info] objfile...

@file
    Read command-line options from file. The options read are inserted in place of the original @file option. If file does not exist, or cannot be read, then the option will be treated literally, and not removed.

[링크 : http://linux.die.net/man/1/strip]

Posted by 구차니
뜬금없는 이야기지만, 일단 iconv는 libc 를 이용한다.
그런데 이 넘은 실제로 /usr/lib/gconv/*.so 파일들을 사용한다.

아무튼, 이 넘들이 없으면 에러는 안나지만 변환이 안된다.
(임베디드에서 iconv 쓰는데 변환이 안되서 찾은 문제)


strace를 해보니
gconv-module은 /usr/lib/gconv-modules에서 잘 open 했는데 EUC-KR.so 를 open 한 후 libc.so.6ld-linux.so.2를 찾네요, 저는 shared library를 안쓰고 있는데 ㅠㅠ 그래서 위 두 파일을 ramdisk/usr/lib 에 복사해 넣은 후 TARGET에서 다시 iconv sample 프로그램을 돌려보니 이제는 정상 동작 합니다.

[링크 : http://kldp.org/node/76270]



음.. 그래서 일단은 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 ) )
출처:ld의 동작


[링크 : http://earthfall.egloos.com/1794074]

Posted by 구차니
개소리 왈왈2010. 5. 31. 17:01
물 안흘리고, 저게 안흔들리면 되는 거니까..
응?

어디서 많이 듣던 이야기인데?

[링크 : http://photo.media.daum.net/photogallery/foreign/china/view.html?photoid=3248]

'개소리 왈왈' 카테고리의 다른 글

TGIF 시대?  (6) 2010.06.03
저는 오뉴월에 절대 감기 걸리지 않습니다!  (0) 2010.06.01
생애 첫 SATA 하드!  (5) 2010.05.29
리눅스 마스터 1급 최종합격  (8) 2010.05.28
우리 한메일이 달라졌어요(응?)  (4) 2010.05.27
Posted by 구차니
libfreetype의 example1.c 컴파일 하려면 보기보다 빡시다
버그인지는 모르겠지만 /usr/include/ft2build.h 파일에 include 경로가
 #include <freetype/config/ftheader.h>
로 되어있지만 실제로 이 경로는 존재하지 않는다.

/usr/include/freetype2/freetype 에 각종 헤더들이 존재하는데, 이를 해결하기 위해서는
 ln -s /usr/include/freetype2/freetype /usr/include/freetype
이런식으로 심볼릭 링크를 생성해주어야 한다.

아무튼 이러한 헤더경로를 수정해주고 나면 모르면 어려운 에러가 발생한다.
freetype 을 사용하는 녀석들은 수학 라이브러리와 freetype 라이브러리를 사용하므로
 $ gcc -lm -lfreetype
을 넣고 컴파일을 돌려야 한다.
2010/05/30 - [Linux] - libm (math library)

그리고 example1.c 의 경우 폰트의 경로를 직접넣어 주어야 한다.
우분투에서 폰트의 기본 경로는 /usr/share/fonts 이므로 그 안에서 직접 폰트의 전체경로를 넣어주어야 한다.
2010/05/30 - [Linux/Ubuntu] - 우분투 기본 폰트 경로 - Default path of Ubuntu fonts

freetype-doc-2.3.12.tar.bz2 << 이녀석을 압축해제하면 docs/tutorial 에 example?.c 파일'들'이 있다.
그중에 example1.c 를 컴파일 하였으며
 $ gcc -lm -lfreetype example1.c
 $ ./a.out /usr/share/fonts/truetype/ttf-japanese-gothic.ttf test > tt.txt
위와 같은 명령줄로 실행하여 나온 결과는 아래와 같다.
이미지 처럼 나온 것은 메모장을 축소하여 일부분만 잘라낸 것이다.



Posted by 구차니
Linux/Ubuntu2010. 5. 30. 19:11
페도라 코어와 비슷하게 우분투 역시
/usr/share/fonts 에 폰트가 위치한다.

$ tree -d /usr/share/fonts
/usr/share/fonts
|-- X11
|   |-- 100dpi
|   |-- 75dpi
|   |-- Type1
|   |-- encodings
|   |   `-- large
|   |-- misc
|   `-- util
|-- truetype
|   |-- alee
|   |-- freefont
|   |-- openoffice
|   |-- takao
|   |-- thai
|   |-- ttf-dejavu
|   |-- ttf-indic-fonts-core
|   |-- ttf-kacst-one
|   |-- ttf-khmeros-core
|   |-- ttf-lao
|   |-- ttf-liberation
|   |-- ttf-lyx
|   |-- ttf-punjabi-fonts
|   |-- unfonts
|   `-- wqy
`-- type1
    |-- gsfonts
    `-- mathml

2009/03/05 - [Linux] - 리눅스 폰트 위치 - Default directory path of FC(Fedora Core) fonts

'Linux > Ubuntu' 카테고리의 다른 글

yaffs2 하려는데 왜케 빡시누  (0) 2010.09.14
ubuntu 에서 X window 종료시키기  (0) 2010.08.23
시작 윈도우매니저 세션 변경하기 - 우분투  (0) 2010.05.14
Ubuntu 10.04 KDE  (2) 2010.05.11
Ubuntu 10.04 XFCE  (0) 2010.05.11
Posted by 구차니
Linux2010. 5. 30. 19:00
libfreetype 테스트용 프로그램을 컴파일 하는데
아래와 같은 문제가 발생을 했다.

$ gcc example1.c -lfreetype
/tmp/cc2ePnil.o: In function `main':
example1.c:(.text+0x278): undefined reference to `cos'
example1.c:(.text+0x2b0): undefined reference to `sin'
example1.c:(.text+0x2e8): undefined reference to `sin'
example1.c:(.text+0x320): undefined reference to `cos'
collect2: ld returned 1 exit status

해결책은 간단하게 gcc -lm 을 하면 되는데,
Perhaps it needs the maths library linked, -lm, as that is where 'cos' will be.
Though that seems a strange thing to be missing.

[링크 : http://computer-yocher.blogspot.com/2010/05/re-sage-devel-sage-441-build-failures.html]

여기서 -l 은 library이고 파일명으로는, lib 접두가 붙게된다.
즉, -lm은 우분투 10.04 기준으로
lrwxrwxrwx 1 root root      14 2010-05-26 21:55 /usr/lib/libm.so -> /lib/libm.so.6

이녀석을 의미하고, cos() sin() tan()을 사용하는 math.h 를 사용할때에는
추가적으로 -lm 옵션을 추가하여 math library를 링크해주어야 한다.

Posted by 구차니

아놔 오른팔에는 옷이 꽉끼어서
그자리에 그대~~~로 4시간을 있었더니
선탠 자국이 확나버렸어 ㄱ-
어쩔 ㄱ-

'개소리 왈왈 > 사진과 수다' 카테고리의 다른 글

광교산 등산  (6) 2010.06.04
옛날사진들  (2) 2010.06.02
여기는 지구 달 나와라 오바.  (0) 2010.05.27
반포대교 분수 야경 (달빛무지개분수)  (2) 2010.05.21
보헤미안 안녕~ 2  (0) 2010.05.21
Posted by 구차니
Linux2010. 5. 29. 10:36
ATMEL AVR에서도 cli() sti()는 들은거 같았는데, Linux에서도 있었군 -ㅁ-!
아무튼 결론은, Linux Kernel 2.6 이상의 커널에서는 사용하지 않으면 하위호환성으로 인해 존재할 뿐
실질적으로는 local_irq_enable / local_irq_disable 을 사용하라고 한다.

CLear Interrupt
SeT Interrupt 입니다.
인터럽트를 Disable/Enable하는 것이고요. ;;

[링크 : http://kldp.org/node/43805]

커널 2.6 의 <include/linux/interrupt.h> 에 define 되어 있습니다.
이전 버전과의 호환성을 위해 존재하며
앞으로는 local_irq_enable/disable() 을 직접 사용하는 편이 좋습니다.

50 /*
51 * Temporary defines for UP kernels, until all code gets fixed.
52 */
53 #ifndef CONFIG_SMP
54 # define cli() local_irq_disable()
55 # define sti() local_irq_enable()
56 # define save_flags(x) local_save_flags(x)
57 # define restore_flags(x) local_irq_restore(x)
58 # define save_and_cli(x) local_irq_save(x)
59 #endif

[링크 : http://kldp.org/node/43805]

Posted by 구차니
개소리 왈왈2010. 5. 29. 00:16
XP라서 AHCI 켜고, 드라이버 깔고 하다보니 하루가 쑥~


그런데.. XP는 SATA를 기본지원 안하잖아?
Win7을 구해야 하나?

리눅스로 가고 싶은데 게임이 안되잖아?
아마 안될꺼야~ ㅠ.ㅠ
Posted by 구차니
선거까지 6일전. 주말 제외하면 실질적으로 4일도 안남았는데

아직까지 안오는건 8장 찍을려면 힘드니까 겐또 찍어서
을 밀어주라는

딴나라당의 농간인가?





일단 중앙선거관리위원회에서 확인!
[링크 : http://epol.nec.go.kr/]
[링크 : http://search.daum.net/search?w=tot&q=]
Posted by 구차니