레이블이 ubuntu인 게시물을 표시합니다. 모든 게시물 표시
레이블이 ubuntu인 게시물을 표시합니다. 모든 게시물 표시

2012년 10월 28일 일요일

Make의 확장판 Autotoolset


make는 여러파일로 분할된 프로그램을 빌드할 때 사용된다.
리눅스 및 유닉스에서 다양하게 그리고 오래된 툴로 왠만한 사용자는 한번씩 들어보았을 거라 생각된다.

여기서 소개할 것은 Autotoolset이다.
파일이 많아지면 Makefile이 복잡해 지고 이식성을 높이기 위해 Makefile의 업그레이드판인 Autotoolset을 사용한다고 한다.


환경은 우분투 12.04 , Mint linux에서 실행했다.

1. Autotoolset을 설치하기 위해 sudo apt-get install automake 명령으로 설치한다.



2. 단순한 c파일을 만든다.(Hello world를 출력하는 c파일이라 한다.)



3. autoscan 을 입력한다. 그러면 configure.scan파일이 생성된다. 이 파일은 반자동으로 메이크파일과 플랫폼에 따른 매크로를 생성한다. configure.scan파일을 수정한다.


--configure.scan--
  #                                               -*- Autoconf -*-
  # Process this file with autoconf to produce a configure script.

  AC_PREREQ([2.68])
  AC_INIT([FULL-PACKAGE-NAME], [VERSION], [BUG-REPORT-ADDRESS])  
  AC_INIT(hello, 0.1 , kim@gmail.com)
  AC_CONFIG_SRCDIR([hello.c])
  AC_CONFIG_HEADERS([config.h])

  # Checks for programs.
  AC_PROG_CC

  # Checks for libraries.

  # Checks for header files.

  # Checks for typedefs, structures, and compiler characteristics.

  # Checks for library functions.

  AC_OUTPUT(Makefile)



--configure.scan--


이 후 configure.scan파일을 configure.in 로 파일명을 바꾸어 준다.



4. Makefile.am파일을 만든다.
 
   --Makefile.am--
   bin_PROGRAMS  = hello
   hello_SOURCES = hello.c



5. 프로그램에 대한 정보를 기술하는 문서를 든다.
  touch AUTHORS ChangeLog NEWS README
  이 파일이 없으면 에러를 뿜어내니.. 만들도록 하자(자동으로 만들어주지 않는다.)



6. aclocal, autoconf, automake 을 입력한다.




7. 이 후 configure파일이 생성되었을 텐데 이 파일을 실행시키자.
  ./configure




8. 그러면 Makefile이 나올 것이다. 이 파일을 열면 프로그램의 빌드에 필요한 많은 정보를 내포하고 있다.



9. make를 실행하면 hello파일이 생긴것을 확인 할 수 있다. hello파일을 실행시켜 보면 우리가 원하는 결과를 얻을 수 있다.





 

2012년 10월 18일 목요일

우분투에서 두 파일이 같은지 아닌지 확인해 보는방법

1. 사이즈를 비교한다.
  -> 사이즈가 똑같다면..?

2. jacksum을 이용하여 md5 나 다른 해쉬를 이용한 값으로 비교한다.
 -> jacksum -a md5 파일이름

두개의 파일의 결과를 확인하고 비교한다. 한글자라도 다르면 두 개의 파일은 다른 파일이다.


출처

nfs-common 의존성


ub@ubuntu:~/work$ sudo apt-get install nfs-kernel-server nfs-common portmap
패키지 목록을 읽는 중입니다... 완료
의존성 트리를 만드는 중입니다    
상태 정보를 읽는 중입니다... 완료
몇몇 패키지를 설치할 수 없습니다. 요청한 상황이 불가능할 수도 있고,
불안정 배포판을 사용해서 일부 필요한 패키지를 아직 만들지 않았거나,
아직 Incoming에서 나오지 않은 경우일 수도 있습니다.
이 상황을 해결하는데 다음 정보가 도움이 될 수도 있습니다:

다음 패키지의 의존성이 맞지 않습니다:
 nfs-common : 의존: rpcbind (>= 0.2.0-6ubuntu1) 하지만 %s 패키지를 설치하지 않을 것입니다
E: 문제를 바로잡을 수 없습니다. 망가진 고정 패키지가 있습니다.


ub@ubuntu:~/work$ sudo apt-get install nfs-kernel-server nfs-common
설치하면 됨..


portmap을 rpcbind가 대신하고 있으니까 portmap이 없어도 된다는 이야기...

여러 파일 압축해제(tar)

많은 파일을 압축해제 하고 잠시 자리를 비우고 싶을때...!

find . -name "maple210*.tgz" -exec tar xzvf {} -C ~/work \;

find로 찾은 결과가 {}안에 들어가고 -C는 디렉토리 바꿈