새로운 OS에 라이브러리 설치하기

현존하는 C 패러다임에서 라이브러리를 설치한다는 것은 적어도 (최소한) 다음 툴들이 각 라이브러리에 맞게 존재한다는 것

  • C compiler 혹은 C++ compiler : 이건 GCC 등으로 인해 상대적으로 잘 퍼져있고, 표준에 맞게만 짜면 상당히 포터블함[1]
  • Linker (+ loader): 링커는 컴파일러 툴셋의 일부이긴하지만 상대적으로 OS에 의존적인 부분. OS마다 실행 파일 형태가 다르고[2] 그에 따른 링커 동작도 변화한다

여튼 MacOS X에 자주 쓰는 라이브러리들을 몇 가지 설치했다. 그래도 *nix류라서 GCC가 정상적으로 도는 것 같고해서 별 어려움 없이 진행되긴 한듯.[3]

  • Boost — C++ 유저인 rein의 경우 boost는 빛임(…). toolset 만 darwin으로 잡아주면 문제 없이 설치된다.[4]
  • intel TBB — binary 배포판이 존재한다. 일단 그걸로 설치. 나중에 생각나면 빌드를 하던가 말던가(…)
  • UnitTest++ — 라이브러리를 빌드했는데 (.a 파일로 static 빌드됨), 링크가 안된다. 구글에게 물어보니 ranlib을 써서 TOC를 만들어줘야하는군…[5]

여튼 이런 과정을 통해서 라이브러리 설정 종료. 워크샵 준비도 슬금슬금 시작. 인증샷(?)

eclipse_on_leopard

ps. 자주 사용하는 라이브러리가 ANSI/ISO C++ 이고, 대부분의 OS의 경우에 최신 Compiler만 설치되어있어서 별 무리 없이 쓸 수 있다는 것은 참 좋은듯. Python에 비하면 불편하기야 하지만 잃는게 있어야 얻는게 있지…

그리고 boost::thread의 read/write mutex에 존재하던 문제는 1.35로 넘어오면서 해결된듯하다. 새로운 mutex 구현체 쪽으로 read/write mutex와 일부 타입이 typedef 으로 변경된 것을 확인했음

  1. 특히 C의 경우엔 Java보다 더 호환성있게 옮겨지는 경우를 왕왕 본다. 예를 들어 새 모바일 기기가 나올 때마다 포팅되는 Quake라거나…. []
  2. Win32만 해도 COM, PE, linux의 ELF, COFF, … []
  3. 물론 구글에게 물어본게 있지만 []
  4. bjam -j2 –with-python-version=2.5 –toolset=darwin 으로 설치. toolset 없이 하면 GCC가 기본으로 잡혀서 링커 에러를 내더라… []
  5. 근데 내 기억이 맞다면 이거 그냥 index만 헤더에 만들어서 링킹만 조금 빠르게 해주는거 아닌가. 맥은 이거 없으면 링크 실패한다 []

Author: rein

나는 ...

6 thoughts on “새로운 OS에 라이브러리 설치하기”

  1. 어라 저 hash_t::const_accessor는 어디에 나오는 뭐하는 놈이에요?
    . 랑 -> 둘다 쓸수 있는건 첨 봤어요(… 라지만 맘먹고 오퍼레이터 만지면 다 되는건가… ㅡ_ㅡ;; )

  2. D.L / smart pointer나 iterator들 처럼 포인터의 추상화인 경우에는 대부분 저렇다고 생각해도 된다.

    -> 를 overload해서 wrapping하는 포인터의 연산들이 될 거고,
    . 는 smart pointer나 iterator 자체의 연산들이 되겠지. (결정적으로 . 는 overload가 안된다)

    ps. 저건 intel TBB에 들어있는 concurrent_hash_map 의 read/write 접근자(iterator랑 달리 traverse는 안됨) 다

Leave a Reply