'리눅스'에 해당되는 글 11

  1. 2010/08/21 Ubuntu 8.10에 Ruby/SDL 설치하기 (4)
  2. 2010/07/24 플러그인 만들어보기 (4)
  3. 2009/10/22 How to install Boost Library in Ubuntu 9.04 (2)
  4. 2009/08/13 The Linux Kernel - 2.0.33
  5. 2009/05/19 내 vimrc
  6. 2008/08/17 ubuntu 설치 (7)
  7. 2007/11/29 -_-;;
  8. 2007/11/01 NFS 사용법
 

Ubuntu 8.10에 Ruby/SDL 설치하기

리눅스 | 2010/08/21 18:19 | Posted by DMW
크리에이티브 커먼즈 라이선스
Creative Commons License
일단 ruby랑 gem까지 다 설치를 하자. 원래는 그러구나서

sudo gem install rubysdl

명령으로 한방에 설치가 되야 되는데...뭐라고 에러를 막 토해내면서 안된다.
아래처럼 설치하자

sudo apt-get install libruby1.9
sudo apt-get install libsdl-ruby

이러면 된다 -_-;;

원래 ruby/sdl gem이 문제가 좀 많은거 같다. 윈도우에서도 설치가 잘 안된고..암튼 웃기다


고침

gem으로 설치가 왜 안되는지 알았다능. sdl 라이브러리가 설치가 되 있어야 된다능.

sudo apt-get install libsdl1.2-dev libsdl1.2debian

일캐하구

sudo gem install rubysdl

일캐하면 될꺼심. gem으로 깔면 최신버젼이 깔린다능. 위에 써놓은 대로 하면 1.3.1이 깔림.
구식임. 꼬랐다능.

또고침
sudo aptitude install gnome-devel

sudo apt-get install libsdl1.2-dev libsdl1.2debian
sudo apt-get install libsdl-image1.2-dev
sudo apt-get install libsdl-mixer1.2-dev
sudo apt-get install libsdl-ttf2.0-dev
sudo apt-get install libsmpeg-dev

wget http://shinh.skr.jp/sdlkanji/SDL_kanji-0.0.3.tar.gz
    configure
    make
    sudo make install
 
위에 처럼 모든 의존성이 있는 라이브러리를 다 설치하고 gem으로 설치하면 된다. 이게 가장 쉽고 확실한 방법임.
저작자 표시 비영리 동일 조건 변경 허락

'리눅스' 카테고리의 다른 글

Ubuntu 8.10에 Ruby/SDL 설치하기  (4) 2010/08/21
플러그인 만들어보기  (4) 2010/07/24
How to install Boost Library in Ubuntu 9.04  (2) 2009/10/22
The Linux Kernel - 2.0.33  (0) 2009/08/13
내 vimrc  (0) 2009/05/19
ubuntu 설치  (7) 2008/08/17
TAG ruby, SDL, ubuntu

댓글을 달아 주세요

  1. Favicon of http://marocchino.tistory.com BlogIcon progr_ 2009/02/27 01:11  댓글주소  수정/삭제  댓글쓰기

    우왕- sdl이면 저번에 나무그릴떄쓰던 그거죠? 'ㅅ'

  2. Favicon of http://blog.bab2min.pe.kr BlogIcon ∫2tdt=t²+c 2009/02/27 23:49  댓글주소  수정/삭제  댓글쓰기

    루비 실망이쿤효 그럴줄 몰랐는데ㅋㅋㅋ

플러그인 만들어보기

리눅스 | 2010/07/24 09:59 | Posted by DMW
크리에이티브 커먼즈 라이선스
Creative Commons License
리눅스에서는 Shared Object 라고 부르는 DLL을 로드해서 사용하는걸 플러그인이라구 불르는거 같더라능. 윈도우라면 DLL을 불러오면 될태고.....아무튼 플러그인과 메인 프로그램 사이의 인터페이스를 잘 정의하는게 관건있거 같더라능.

뭐...어짜피 난 잘모르구 -_-;;;; 리눅스에서 Shared Object를 불러다 쓰는건  dl 라이브러리를 사용하면 된다능. dlopen() 으로 .so를 연 다음, dlsym() 으로 써서 잘 사용하구 나서 dlclose() 를 해주면 된다능. 자세한 사용법은 man page를 보는게 훨 좋을태니 아래 링크를 눌르라능

헬로우 월드 문자열을 플러그인을 불러다 적당히 변형해서 출력하는 프로그램을 싸봤다능. 소스코드 전체를 올려놓을태니 궁금하면 이걸 받아서 보라능. make 한담에 아래 처럼 켜보면 된다능. downcase.so를 아규먼트로 넣어주면 소문자로 출력해준다능. 끵.

dmw@dmw-desktop:~/works/linux_plugin_example$ ./hello_plugin upcase.so
ORIGINAL MESSAGE : HelLO wOrLD

LOAD PLUG-IN ... success!
        converting message using plug-in

CONVERTED MESSAGE : HELLO WORLD


메인 프로그램은 아래처럼 생겼고....

#include <stdio.h>
#include <stdlib.h>
#include <dlfcn.h>

typedef int(*p2func)(char*);

int open_plugin(void** plugin_handle, char* plugin_name);
int close_plugin(void* plugin_handle);
p2func import_function(void* plugin_handle, const char** error);

int main(int argc, char** argv) {
	int res;
	void* plugin_handle;
	const char* error;
	char hello_message[] = "HelLO wOrLD\n";
	p2func converter;
	
	if(argc == 1) {
		printf("hello_plugin upcase.so or downcase.so\n");
		return 1;
	}

	printf("ORIGINAL MESSAGE : %s\n", hello_message);
	
	printf("LOAD PLUG-IN ... ");
	res = open_plugin(&plugin_handle, argv[1]);
	if(res) {
		fprintf(stderr, "\nplug-in load error : %s\n", dlerror());
		return 1;
	}

	converter = import_function(plugin_handle, &error);
	if(error) {
		fprintf(stderr, "\nplug-in load error : %s\n", error);
		close_plugin(plugin_handle);
		return 1;
	} else {
		printf("success!\n");
	}

	printf("\tconverting message using plug-in\n");
	converter(hello_message);
		
	printf("\nCONVERTED MESSAGE : %s\n", hello_message);

	close_plugin(plugin_handle);
	return 0;
}

int open_plugin(void** plugin_handle, char* plugin_name) {
	*plugin_handle = dlopen(plugin_name, RTLD_NOW);

	if(*plugin_handle == NULL) {
		return 1;
	}

	return 0;
}

p2func import_function(void* plugin_handle, const char** error) {
	p2func func;

	// dlsym() is return NULL if there is no symbol in DL library.
	// If symbol has a NULL as it's value. We can not determine calling dlsym()
	// is success or not. So, We are using dlerror()
	*error = dlerror();						// clear error code

	func = dlsym(plugin_handle, "conv");
	*error = dlerror();
	if(*error) {
		return NULL;
	}

	return func;
}

int close_plugin(void* plugin_handle) {
	return dlclose(plugin_handle);
}

 플러그인이랍시고 만들어본건 저러캐 생겼다능.

1
2
3
4
5
6
7
8
9
10
11
int conv(char* str) {
	char *ptr;

	ptr = str;
	while(*ptr != '\0') {
		*ptr = toupper(*ptr);
		ptr++;	
	}

	return 0;
}


전체 소스코드

빌드 방법은 그리 어렵지 않으니 Makefile을 보시라능.

끵?!
저작자 표시 비영리 동일 조건 변경 허락

'리눅스' 카테고리의 다른 글

Ubuntu 8.10에 Ruby/SDL 설치하기  (4) 2010/08/21
플러그인 만들어보기  (4) 2010/07/24
How to install Boost Library in Ubuntu 9.04  (2) 2009/10/22
The Linux Kernel - 2.0.33  (0) 2009/08/13
내 vimrc  (0) 2009/05/19
ubuntu 설치  (7) 2008/08/17

댓글을 달아 주세요

  1. Favicon of http://lazygyu.tistory.com BlogIcon LazyGyu 2010/08/02 10:04  댓글주소  수정/삭제  댓글쓰기

    으, 음난한 리눅스 프로그래밍이근염

  2. Favicon of http://www.filepang.co.kr BlogIcon DMW 2010/08/02 21:07  댓글주소  수정/삭제  댓글쓰기

    으...음란하다니...불건전하다!

  3. Favicon of http://jkherald.com BlogIcon 정기 2010/08/06 15:43  댓글주소  수정/삭제  댓글쓰기

    dlopen -> dlsym -> dlclose
    LoadLibrary -> GetProcAddress -> FreeLibrary
    이렇게 대응되는 거냐능

How to install Boost Library in Ubuntu 9.04

리눅스 | 2009/10/22 02:56 | Posted by DMW
크리에이티브 커먼즈 라이선스
Creative Commons License

 C++에서 정규식을 쓰고 싶어서...쓸만한 라이브러리를 찾다가 boost에 정규식 라이브러리가 포함되 있다는걸 알았다. 기왕 설치할꺼 boost까지 다 깔아봤다. http://www.boost.org 의 Getting Started on Unix Variants 페이지를 참조했다.


 적당히 디렉토리를 하나 만들고 소스코드를 받자. 나는 ~/src 디렉토리에 boost 소스코드를 받았다능. 압축도 좀 풀어주고...


 Getting Started on Unix Variants 페이지의 2.The Boost Distribution 부터 4. Build a Simple Program Using Boost 를 읽고 Build a Simple Program Using Boost 를 따라해보자. 시키는데로 하는게 제일 속 편하다능. 내 경우에 path/to/boost_1_40_0 는 ~/src/boost_1_40_0 가 되었다. 자신이 정한 디렉토리로 path/to/boost_1_40_0를 치환하는걸 잊지말자능.

 이제 섹션 5.1을 따라하자. 아마도 root 퍼미션이 필요할태니....다음과 같이 입력하자.

$ cd path/to/boost_1_40_0
$ ./bootstrap.sh --help
$ sudo ./bootstrap.sh

 그 다음에 bjam 이란걸 실행시키면 된단다. 간단하네 신선함!

$ sudo ./bjam install

 지루하게 오래걸릴태니 커피를 마시면서 아래 동영상을 좀 보고 있자.


 내 경우에는 넷북인데다...vm으로 우분투를 돌려서 레알 오래걸렸다. 재보진 않았지만 20분은 걸린거 같다능 -_-;; 그리고 중간중간 에러가 좀 나왔지만...됐다는게 중요한거다 >_<.


 이제 6. Link Your Program to a Boost Library 나와있는 소스코드를 따라치고 다이나믹 링크로 컴파일을 해보자.

$ c++ test_boost.cpp -o test_boost -lboost_regex

 다음과 같이 입력해서 라이브러리 패스를 잡아주라능

$ LD_LIBRARY_PATH=/usr/local/lib:${LD_LIBRARY_PATH}
$ export LD_LIBRARY_PATH


 6.2 Test Your Program에 나와있는 샘플 텍스트를 쳐서 태스트 프로그램을 돌려보자.

$ ./test_boost < jayne.txt 
    => will Success Spoil Rock Hunter?

 will Success Spoil Rock Hunter? 라고 결과가 나오면 잘 된거다 >_<.

 ~/.bashrc를 편집해서 환경변수 LD_LIBRARY_PATH를 등록해주면 완전히 끝이다.
저작자 표시 비영리 동일 조건 변경 허락

'리눅스' 카테고리의 다른 글

Ubuntu 8.10에 Ruby/SDL 설치하기  (4) 2010/08/21
플러그인 만들어보기  (4) 2010/07/24
How to install Boost Library in Ubuntu 9.04  (2) 2009/10/22
The Linux Kernel - 2.0.33  (0) 2009/08/13
내 vimrc  (0) 2009/05/19
ubuntu 설치  (7) 2008/08/17
TAG boost, ubuntu

댓글을 달아 주세요

  1. Favicon of http://www.lastking.net BlogIcon ctcquatre 2010/04/07 22:29  댓글주소  수정/삭제  댓글쓰기

    포스팅 감사합니다.
    글덕분에 boost 아주 쉽게 설치 잘했습니다.
    제 블로그에 원문 출처를 밝히고 담아가겠습니다.

The Linux Kernel - 2.0.33

리눅스 | 2009/08/13 11:48 | Posted by DMW
크리에이티브 커먼즈 라이선스
Creative Commons License

 옛날 버젼인 2.0.33을 다루고 있는 문서라능. 무지 옛날 버젼이긴 하지만 당시에 2.0.33 버젼의 커널로 많은 서버들이 돌았을것을 생각해보면 나쁠꺼 업ㅂ다. 거기다 한글로 번역되이다!!! 커널 용량이 작고 최신 버젼보다 자원을 덜 소모한다는게 장점이라면 장점이라능. 번역해주신 분들께 매우 감사하다능.

난 텍스트 파일로 가지고 있긴한데...올리려면 저자의 허가를 받아야된단다. 그래서 올리진 못하겠고...저기가면 볼 수 있다.

HTML 버젼
http://wiki.kldp.org/Translations/html/The_Linux_Kernel-KLDP/The_Linux_Kernel-KLDP.html

PDF 버젼
http://linux.flyduck.com/kernel/tlk/tlk-0.1.0/tlk.pdf  
저작자 표시 비영리 동일 조건 변경 허락

'리눅스' 카테고리의 다른 글

플러그인 만들어보기  (4) 2010/07/24
How to install Boost Library in Ubuntu 9.04  (2) 2009/10/22
The Linux Kernel - 2.0.33  (0) 2009/08/13
내 vimrc  (0) 2009/05/19
ubuntu 설치  (7) 2008/08/17
-_-;;  (0) 2007/11/29

댓글을 달아 주세요

내 vimrc

리눅스 | 2009/05/19 17:57 | Posted by DMW
크리에이티브 커먼즈 라이선스
Creative Commons License



딸랑 설정 파일만 올리기 뭐하니까 그림두 한장. 백업도 할겸 올려놨따능




저작자 표시 비영리 동일 조건 변경 허락

'리눅스' 카테고리의 다른 글

How to install Boost Library in Ubuntu 9.04  (2) 2009/10/22
The Linux Kernel - 2.0.33  (0) 2009/08/13
내 vimrc  (0) 2009/05/19
ubuntu 설치  (7) 2008/08/17
-_-;;  (0) 2007/11/29
NFS 사용법  (0) 2007/11/01
TAG vimrc, 뻘글

댓글을 달아 주세요

ubuntu 설치

리눅스 | 2008/08/17 22:05 | Posted by DMW
크리에이티브 커먼즈 라이선스
Creative Commons License
사용자 삽입 이미지

설치하는데 어련것도 없었고 다른 배포판보다 쉽다거나 그런건 모르겠다.
윈도우 보다 좋은점도 없고 딱히 나뿐점도 없다.

한가지 불편한점은 한국에 적을 두고 있는 홈페이지들이 잘 안열린다는 건데
그런곳에 잘 들리는편이 아니라 괜찬다.

얼마전 까지 쓰던 윈도우 비스타보다 좋은점은 화면효과가 더 미려하다는거다 >_<

'리눅스' 카테고리의 다른 글

The Linux Kernel - 2.0.33  (0) 2009/08/13
내 vimrc  (0) 2009/05/19
ubuntu 설치  (7) 2008/08/17
-_-;;  (0) 2007/11/29
NFS 사용법  (0) 2007/11/01
How to Send Email Using Telnet  (0) 2007/11/01
TAG ubuntu

댓글을 달아 주세요

  1. Favicon of http://kloiahack.tistory.com BlogIcon Kloiahack 2008/08/19 21:50  댓글주소  수정/삭제  댓글쓰기

    우분투는 좀 무거워요.. -_-a

  2. Favicon of http://holygate.tistory.com BlogIcon arcma 2008/08/30 15:26  댓글주소  수정/삭제  댓글쓰기

    바보야 마우스 패드를 갈아봐.. 더 빨라진다

  3. Favicon of http://stdio.tistory.com BlogIcon 머리 2008/11/07 19:45  댓글주소  수정/삭제  댓글쓰기

    저도 휴가가면 우분투 다시 깔아야겠다능

    • Favicon of http://filepang.tistory.com BlogIcon DMW 2008/11/10 02:32  댓글주소  수정/삭제

      주얼로 게임을 하나 샀는데...wine으로 않되서 윈도우XP로 갈아탔음. -_-;;;

    • Favicon of http://stdio.tistory.com BlogIcon 머리 2008/11/12 19:06  댓글주소  수정/삭제

      ㅋㅋㅋ

      제 놋북으로 우분투 XP 두개 멀티로 돌려 봤는데 영 무겁더라고요 ㅠㅠ

      와인은 전에 써봤는데 되게 괜찮았는데 ㅎㅎ

      마메론 돌려봤을때 놀랬어요 ㅋㅋ 스타 안댔을때는 춈 안습이였지만 ㅎㅎ

-_-;;

리눅스 | 2007/11/29 17:19 | Posted by DMW
크리에이티브 커먼즈 라이선스
Creative Commons License





 이번학기 팀플젝중 하나였던 리눅스 파일 전송기 하나의 프로그램으로 서버, 클라이이언트 역활을 동시에 한다. conf파일을 읽어들여 접속할 서버와 접속을 허용할 클라이언트의 IP를 설정한다. 서버 스레드는 미리 설정된 클라이언트의 접속만 허용한다. 클라이언트 스레드는 미리 설정된 서버로 접속을 시도한다.

             Head                  Nodes                                                 Tail
       Com_1.server ->  Com_2.client          Com_3.server  ->  ....  Com_N.client
X ->Com_1.client        Com_2.server ->   Com_3.client               Com_N.server -> X


 이런식으로 conf파일을 설정한다면 Com_1에서 파일을 보내면 Com_N까지 동일한 파일이 줄줄이 전송된다.


코드 수준은 좀 별로라능 -_-;

'리눅스' 카테고리의 다른 글

내 vimrc  (0) 2009/05/19
ubuntu 설치  (7) 2008/08/17
-_-;;  (0) 2007/11/29
NFS 사용법  (0) 2007/11/01
How to Send Email Using Telnet  (0) 2007/11/01
간단한 RPM 사용법  (0) 2007/10/18

댓글을 달아 주세요

NFS 사용법

리눅스 | 2007/11/01 17:59 | Posted by DMW
크리에이티브 커먼즈 라이선스
Creative Commons License
설정하는법
/etc/exports 파일을 수정한다

/경로 ip(rw,sync,no_root_squash)
/root/sample/ ip(rw,sync,no_root_squash)


마운트 하는법
mnt -t ip:/root/sample /mnt/nfs
             host dir         target dir

'리눅스' 카테고리의 다른 글

ubuntu 설치  (7) 2008/08/17
-_-;;  (0) 2007/11/29
NFS 사용법  (0) 2007/11/01
How to Send Email Using Telnet  (0) 2007/11/01
간단한 RPM 사용법  (0) 2007/10/18
vsftp 설정하기  (0) 2007/10/04
TAG NFS, 리눅스

댓글을 달아 주세요