어쩌라구..?? ㅡㅡa..

Posted
Filed under Linux/programming
glade-3로 UI를 만들고 저장하면 소스파일이 전혀 생기지 않고
.glade 파일만 덜렁 생기고 끝이다.
열어보면 XML로 작성된 파일이다.

전에는 glade로 UI 만들고 저장하면 c 소스코드도 줬던걸로 기억하는데
이상하다 생각해서 찾아보니까
glade-3 부터는 아예 소스코드 만드는 기능을 없애버렸다고 한다.
그러면 이걸 어떻게 써먹나... 해서 또 찾아보니까
libglade 라는 라이브러리를 이용해서 프로그램을 띄울 수 있다고 한다.
그래서 써먹어 봤다.

그런데 libglade 홈페이지에서 시킨대로 하니까 이런 에러가 난다.
libglade-WARNING **: could not find signal handler 'some_handler'
이런 제길... ㅜㅜ.

인터넷 조낸 찾아봤는데 질문은 많은데 해결책이 없었다.
쉬벌쉬벌 하면서 찾고, 어찌어찌 하다보니 해결이 됐다.
그래서 나같은 사람 있으면 또 삽질할까봐 글을 남긴다.



libglade  메뉴얼이나 기타 문서를 보면
시그널 핸들러(이벤트 핸들러) 함수가 라이브러리에 있지 않고
바이너리 파일에 있는 경우에는
컴파일 할때 --export-dynamic 옵션을 붙여서 컴파일하라고 한다.
이대로 하면 때려 죽여도 안된다. 적어도 내 리눅스 박스에서는 그랬다.
내가 쓰는 배포판은 우분투 7.10 gutsy 버전인데 안된다.

저 옵션이 아니라 다음 옵션을 써야 한다.
-export-dynamic 또는 -Wl,--export-dynamic
저걸 링커 옵션에 집어 넣어야 한다. 컴파일 옵션에 넣어도 에러 안 나는지는 확인 안해봤다.
Makefile 만들때 LDCONFIG 변수에 때려 박으면 된다.
옵션 글자를 주의 깊게 보기 바란다. 하이픈(-)의 갯수가 다르다.
나 개인적으로는 후자를 추천한다. 옵션이 좀더 명시적이기 때문이다.
그냥 export-dynamic 옵션만 줄때는 하이픈 두개 쓰면 오류나고 하나쓰면 잘 된다.
뭐가 이래... ㅡㅡ;;

스티븐 이거 알아내느라고 하루 꼬박 삽질했다. 바빠 죽겠는데.. ㅜㅜ
부디 이런것 때문에 고생하는 사람 없으면 좋겠다.

추신 : 어떤 메뉴얼에는 하이픈이 한개로 되어있는 메뉴얼도 있었다.
        아마도 gnome쪽 웹 페이지인것 같은데,
        만약 그걸 먼저 봤더라면 이런 고생 안했겠지... ㅜㅜ.
2007/12/16 07:08 2007/12/16 07:08
핑크팬더

감사합니다. 님 덕분에 전 반나절만 고생을 했네요.. ^^

StevenCVAL

헙.. 어쩌다가 이런곳까지 찾아 오셨나요.. ㅡㅡa...
어쨌거나 도움이 되었다니 기쁩니다.

아리새의펜촉

정말 고맙습니다. 하룻동안 붙잡고 고생한 걸 이 글 덕택에 해결하였습니다.

StevenCVAL

어머나.. 어쩌다가 이런곳까지 흘러 오셨는지...
정말 고생 많이 하셨나 봅니다.. ㅡㅡ/

Posted
Filed under Linux/recommend
인터넷 뒤지다가 우연히 이 게임을 발견했다.
재밌게 하고 있대서 한번 받아 봤는데... 오~~~

생각보다 멋진걸 발견한것 같다.
스토리 모드가 있는지는 모르겠는데,
분위기는 Quake3 느낌이 난다. 엔진을 갖다 썼을지도..

하여간 할만 하더라.
2007/12/15 08:51 2007/12/15 08:51
Posted
Filed under Linux/system
참조 링크 : http://wiki.bluez.org/wiki/HOWTO/AudioDevices

내가 사용중인 블루투스 동글은 웨이브시스텍 BT-2000S 모델이고
헤드셋은 Jabra BT620S를 사용중이다.
혹시나 리눅스에서 동작하는 동글 찾는사람 있을까봐 미리 적는다.

환경은 우분투 7.10 gutsy 에서 설정한 내용이다.
다른 배포판이라도 bluez-util 라이브러리 버전이
3.16이상이면 모두 동일하게 설정할 수 있다고 한다.
설정법도 매우 간단하다.

일단 블루투스 장치를 활성화 시키고 블루투스 장치를 인식했다는 메세지를 확인한다.
그리고 홈 디렉토리에 .asoundrc 파일을 만든다. 기본으로 파일이 없다.
pcm.bluetooth {
  type bluetooth
  device 00:13:17:72:4E:13  # User's headset address
}

pcm.!default {
  type plug
  slave.pcm "bluetooth"
}

#pcm.!default {
#  type route
#    slave.pcm "bluetooth"
#    ttable {
#      0.1 = 1
#      1.0 = 1
#    }
#}

파일 내용을 좀 들여다 보면,
pcm.bluetooth 항목에서 device 번호를 사용자에 맞도록 설정해 주어야 한다.
헤드셋을 페어링 상태로 두고 쉘에서 hcitool scan 명령을 실행시켜 검색해보면
헤드셋의 주소를 알 수 있고, 그 값을 적어주면 된다.

나머지 두 항목은 디폴트 출력 장치를 설정하는 부분인데,
주석(#)으로 묶여있는 항목은 헤드셋의 좌.우를 바꾸는 설정이다.
어떤 모듈인지는 모르겠으나, 블루투스로 들으면 좌.우가 바뀌어 나오는 경우가 있다고 한다.
이런 현상이 있으면 주석을 이용해서 바꿔 주면 해결된다.

그리고 디폴트 항목을 둘 다 주석처리하면
원래 사운드 장치로 출력을 되돌릴수 있다.

설정을 마쳤으면 alsa 시스템을 재시작시킨다.
$ sudo /etc/init.d/alsa-utils restart
그리고 헤드셋을 페어링 모드로 바꾸고 음악을 재생하면
페어링 키 값을 넣으라는 메세지가 뜬다.
키 값을 넣고 정상적으로 연결되면 음악이 잘 나오는걸 확인할 수 있을것이다.
2007/12/13 06:38 2007/12/13 06:38
Posted
Filed under windows
언제나 그렇듯 링크부터 - windirstat.sourceforge.net

윈도우용 디스크 사용량 분석기다.
오픈소스 프로그램이라 구하기도 쉽고 사용법도 간단하지만
내가 필요한 정보는 정말 확실하게 보여준다.
2007/12/03 13:07 2007/12/03 13:07
Posted
Filed under Linux/tip
원본이 aaa 파일(또는 디렉토리)이고, 수정본이 bbb 일때,
이 소스들의 패치파일 ccc.patch 를 만드는 명령이다.

$ diff -urN aaa bbb > ccc.patch

u 옵션은 변경된 라인의 앞뒤로 3줄씩을 더 표시하여 보기 쉽도록 하는 옵션이고,
r 옵션은 지정한 곳에서 하위 디렉토리를 재귀적으로 검사하도록 하는 옵션이고,
N 옵션은 수정본에 새로운 파일이 생겼을때 이를 표시하도록 하는 옵션이다.

그냥 이대로 쓰면 패치 잘 먹는다. ㅡㅡ;
참고로 패치 적용하는 명령은 다음과 같다.
$ patch -p1 < ccc.patch
이 명령을 소스트리의 루트에서 실행시키면 된다.
2007/12/02 01:44 2007/12/02 01:44