IT

'소프트웨어/Linux'에 해당되는 글 21건

  1. 2011.05.21 [MAC OSX] port 명령어
  2. 2011.05.21 USB util 컴파일하기
  3. 2011.05.11 makefile
  4. 2011.05.11 분할 컴파일
  5. 2011.05.02 Linux 디버깅 방법

  - 설치
     port -v install [패키지 명]
     port -v upgrade [패키지 명]

  - 검색
     port search [패키지 명]

  - 삭제
     port uninstall [패키지 명]

  - 정보갱신
     port -v selfupdate
     패키지 트리를 갱신한다.

  - 현황파악
     port -v outdated
        최신버전이 나와, 구버전이 되어버린 패키지를 확인
     port -v upgrade outdated
        구 버전이 된 패키지들을 업그레이드함.
     port -vf uninstall inactive
        구 버전이 된 패키지들을 삭제.
  
  - 패키지 정보 파악
     port -v  info [패키지 명]      -  패키지 정보 파악
     port -v  deps [패키지 명]     -  패키지 의존성 정보 파악

   - 기타 옵션
      -v   :  Vervose
      -f    : Force
      -u   : upgrade 시 Deactivated 된 패키지 자동삭제

'소프트웨어 > Linux' 카테고리의 다른 글

메모리구조  (0) 2011.06.17
kernel  (0) 2011.06.15
USB util 컴파일하기  (0) 2011.05.21
makefile  (0) 2011.05.11
분할 컴파일  (0) 2011.05.11
Posted by sinpk
USB의 디바이스 ID를 검색하기 위하여 다음의 유틸리티를 컴파일합니다.
1. 다운로드 사이트
 
2. 압축 풀기 및 컴파일 하기
        # tar -zxvf usbutils-0.73.tar.gz
        # cd usbutils-0.73
      
        # CC=arm-generic-linux-gnueabi-gcc  RANLIB=arm-generic-linux-gnueabi-ranlib CXX=arm-generic-linux-gnueabi-c++ LD=arm-generic-linux-gnueabi-gcc-ld AR=arm-generic-linux-gnueabi-ar
      
        # vi config.h
      
            148     /* Define to rpl_malloc if the replacement function should be used. */     
            149     #define malloc rpl_malloc     
      
            아래와 같이 수정합니다.
      
            148     /* Define to rpl_malloc if the replacement function should be used. */
            149     /* #undef malloc */     
    
        # make 
    
        # vi Makefile
      
            167 oldincludedir = /usr/include     
            168 prefix = /usr/local     
            169 program_transform_name = s,x,x,
      
            아래와 같이 수정합니다.
      
            168 prefix =./_install/usr
    
        # make install
 
3. 정상적으로 컴파일이 되었다면 임베디드 보드에 아래의 내용과 같이 복사합니다.
        cp -a _install/usr/sbin/lsusb sbin/
        cp -a _install/usr/share/usb.ids usr/local/share/

4. 복사를 하었다면 임베디드 보드에서 USB 장치를 장착한 후 lsusb 라고 치면 장착한 USB의 ID를 찾을 수 있습니다.
    이 USB ID를 가지고 인터넷에서 찾아 보면 해당 디바이스 드라이버등을 찾는데 도움이 되거나, 디바이스 드라이버를 패치하는데 도움을 받을 수 있습니다.

'소프트웨어 > Linux' 카테고리의 다른 글

kernel  (0) 2011.06.15
[MAC OSX] port 명령어  (0) 2011.05.21
makefile  (0) 2011.05.11
분할 컴파일  (0) 2011.05.11
Linux 디버깅 방법  (0) 2011.05.02
Posted by sinpk

makefile

2011. 5. 11. 12:02 : 소프트웨어/Linux

Windows - nmake : 자동 빌드

 

Linux - make : 자동 빌드

CC=gcc <-- make 변수 선언

all:main.c average.c Test <-- 의존성 체크

(라벨)    @echo gcc start

    $(CC) -c main.c

    $(CC) -c average.c

    $(CC) -o main main.o average.o

    @echo end

Test:

    @echo test !!

clean:

    @rm -rf main.o average.o main

    @ls -al

rebuild:clean all

라벨을 적고 나서 바로 밑의 줄에서 키를 눌러야함(빈칸으로 하면 안됨)

@를 붙이면 실행 명령어가 표시가 안된다.

 

라벨의 오른쪽에 소스 명을 적으면 의존성을 체크하고, 라벨 명의 경우는 의존성 체크 실행한다.

 

CC=gcc <-- make 변수 선언

CFLAGS=--save-temps -c

all:main.o average.o average.h

(라벨)    @echo gcc start

    $(CC) -o main main.o average.o

    @echo end

Test:

    @echo test !!

clean:

    @rm -rf main.o average.o main

    @ls -al

rebuild:clean all

 

all:main.o average.o ß 의존성 체크를 통과 못하면 make에서 cc 컴파일러로 main.c, average.c 파일을 자동으로 컴파일한다.

main.o, average.o 파일보다 main.c, average.c 파일의 시간이 최근 시간이면 재 컴파일 한다.

 

CFLAGS: make에서 자동으로 컴파일 옵션을 넣어 준다.

'소프트웨어 > Linux' 카테고리의 다른 글

[MAC OSX] port 명령어  (0) 2011.05.21
USB util 컴파일하기  (0) 2011.05.21
분할 컴파일  (0) 2011.05.11
Linux 디버깅 방법  (0) 2011.05.02
Vi 편집기  (0) 2011.04.26
Posted by sinpk

#include <stdio.h>

float average (int a,int b);

int main()

{

    int num1, num2;

    float avrg;

 

    printf("Please enter an integer: ");

    scanf("%d",&num1);

    printf("Please enter an integer: ");

    scanf("%d",&num2);

 

    avrg = average(num1, num2);

 

    printf("The average of %d and %d is %6.3f\n",num1,num2,avrg);

    return 0;

}

gcc -c main.c

 

float average(int n1, int n2)

{

    float avg;

 

    avg = (float)(n1+n2)/2;

    return avg;

}

gcc -c average.c

 

gcc -o main main.o average.o

분할 컴파일 하는 이유 : 컴파일 시간을 단축 시키기 있기 때문이다.

 

중복 인크루드 방지

#ifndef _AVERAGE_H //(if not define)

#define _AVERAGE_H

Float average(int a, int b);

#endif //_AVERAGE_H

'소프트웨어 > Linux' 카테고리의 다른 글

[MAC OSX] port 명령어  (0) 2011.05.21
USB util 컴파일하기  (0) 2011.05.21
makefile  (0) 2011.05.11
Linux 디버깅 방법  (0) 2011.05.02
Vi 편집기  (0) 2011.04.26
Posted by sinpk
  • gcc 디버깅 옵션 –g
    • gcc –o -g main main.c 
  •  
  • gdb 실행파일
    • gdb main

명령어

의  미

b (breakpoint)

실행 중 디버그를 위해 멈추는 위치 지정

b 함수명

함수명에서 멈춤

b 라인번호

라인번호에서 멈춤

r (run)

실행 시작

K(kill)

프로그램 실행 종료

n (next)

현재 라인 실행 (함수의 경우 실행하고 다음 라인으로 넘어 감)

s (step)

현재 라인 실행 (함수의 경우 호출된 함수 내로 들어가 실행 계속)

c (continue)

다음 breakpoint까지 실행

u(until)

현재루프 빠져나감

finish

현재 함수를 수행하고 빠져나감

return

현재 함수를 수행하지 않고 빠져나감

   

l (list)

현재 수행되고 있는 라인부터 10개 라인씩 연속적으로 소스 코드를 프린트

p (print) 변수명

지정된 변수를 출력한다.(포인터 변수도 가능하다)

p *p@4(배열크기)

배열 변수 p를 출력한다.

p $레지스터명

레지스터를 출력한다.

h (help)

도움말

q (quit)

gdb 종료

 

Set listsize

List 명령어 사용시 보여주는 라인수를 설정한다.

L 함수명, L 라인번호

특정 라인이나 함수로 이동한다.

L 파일명.c:함수명

특정 파일의 함수를 보여준다.

B 라인번호, B 함수명

특정 라인이나 함수에 브레이크 포인트를 설정한다.

B 파일명.c:라인번호

특정 파일의 라인에 브레이크 포인트를 설정한다.

B -2

현재 라인으로부터 2줄 이전에 브레이크 포인트를 설정한다.

B 10 if tmp ==0

10행에 브레이크 포인트를 설정하는데 tmp 변수가 0일 때 작동한다.

CL 라인번호

브레이크 포인트를 해제한다.

D

모든 브레이크 포인트를 해제한다.

Info breakpoints

설정되어 있는 브레이크 포인트를 출력한다.

Info locals

현재 상태에서의 지역 변수를 출력한다.

Info variables

현재 상태에서의 전역 변수를 출력한다.

Enable 브레이크 포인트 넘버

브레이크 포인트를 활성화 한다.

Disable 브레이크 포인트 넘버

브레이크 포인트를 비활성화 한다.

Watch 변수명

변수가 바뀔 때 마다 브레이크 포인트가 걸리면,

변수의 이전 값과 현재 값을 출력한다.

Display 변수명

한줄씩 실행하면서 매번 변수값이 어떻게 변경되었는지 출력해준다.

Undiplay 변수명

Display 를 해제한다.(활성화, 비활성화 가능하다)

'소프트웨어 > Linux' 카테고리의 다른 글

[MAC OSX] port 명령어  (0) 2011.05.21
USB util 컴파일하기  (0) 2011.05.21
makefile  (0) 2011.05.11
분할 컴파일  (0) 2011.05.11
Vi 편집기  (0) 2011.04.26
Posted by sinpk