디지털 장인정신

블로그 이미지
WebKit개발자의 혼자쓰는 블로그
스페로

Article Category

All (71)
Technology (47)
Creativity (19)
Private (4)

Recent Comment

Recent Trackback

Calendar

«   2018/08   »
      1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31  

Archive

My Link

  • Total331,196
  • Today11
  • Yesterday70
  1. 2011.09.24
    유닉스 리눅스 프로그래밍 필수 유틸리티
아주 좋은책.
고수 프로그래머만 아는 암묵적 지식을 책으로 정리하였다.

기억할 만한 것들 발췌함.

gcc 프로파일 결과를 이용한 최적화
1. gcc -O2 -o like like.c -fprofile-generate
2. ./like
like.gcda, like.gcno 파일이 생성됨
3. gcc -O2 -o like like.c -fprofile-use
프로파일 정보를 바땅으로 좀 더 최적화해 빌드함

-fprofile-use 옵션이 최적화해 주는 옵션은 다음과 같다
-fbranch-probabilities
-funroll-loops
-fpeel-loops
-ftracer
-fvpt


링크시 static library의 cross referencing 해결하기
ld는 앞에서 뒤로 한번만 symbol을 체크한다.

만약 libc가 liba를 참조한다면
-la -lb -lc -la
같이 써야 한다는것을 try&error로 터득하고 있었다.

하지만 더 elegant한 방법이 있었다.
gcc ... -Wl,--start-group -la -lb -lc -Wl,--end-group

--start-group 와 --end-group 사이에서 필요한 symbol들을 모두 찾을때까지 계속 check한다.

컴파일시 symbol추가하기
오래된 open source를 빌드하다보면 aaa 심볼이 없다고 빌드가 실패하는 경우가 생긴다.
정석은 configure 파일을 수정하여 빌드하는 것이지만 이것이 힘들때가 있다.
예전 library에만 그런 심볼이 있을 경우가 그런 경우중 하나이다.
만약 aaa심볼이 runtime시에 전혀 쓰지 않는다는것을 안다면 다음과 같이 억지로 빌드 시킬 수 있다.
gcc .... -Wa,-defsym,aaa=0x12345678


'Creativity > Book' 카테고리의 다른 글

전자공학 읽고싶은 책들  (3) 2012.01.31
유닉스 리눅스 프로그래밍 필수 유틸리티  (0) 2011.09.24
핵의학 길잡이  (1) 2011.06.03
Java Concurrency in Practice  (0) 2011.05.15
Debug it! 실용주의 디버깅  (1) 2011.02.19
생각하는 뇌, 생각하는 기계  (0) 2010.09.20
Trackback 0 and Comment 0