IT관련 지식들 2016. 7. 25. 15:04

makefile을 분석하기 위해서는 먼저 gcc 컴파일에 대한 이해가 필요하다.


1. 기본동작


execute파일을 생성한다.


==== 소스코드 ====


#include <stdio.h>


int main(int argc, char** argv)

{

    printf("Hellow World\n");

    return 0;


==== 실행 예제 ====


$ gcc test.c

$./a.out

Hellow World


==== 이론 ====

1. 전처리 단계 - 전처리기 (cpp)

: #include, #define 등 #으로 시작하는 문법 사항이 적절히 전처리된 C 언어 소스파일 생성

2. 컴파일 단계 - 컴파일러 (cc1) 

: C 언어 소스파일은 컴파일 과정을 거쳐 어셈블리 소스 파일이 됨

3. 어셈블 단계 - 어셈블러 (as)

:어셈블리 소스 파일은 어셈블 과정을 거쳐 목적 파일이 됨 

4. 링크 단계 - 링커 (ld)

: 목적 코드는 라이브러리와 링크되어 실행 가능한 파일이 됨


2. 옵션

  2.1. 실행파일명 입력 [-o outfile]


$ gcc test.c -o test

$./test

Hellow World


  2.2. 오브젝트파일 생성까지만 진행 [-c] 

    - 위 이론에서 3번까지만 진행. *.o파일을 생성.

    - 각각의 오브젝트파일을 만들어 추후에 링크를 걸 경우 유용함.

ㄱ) 한번에 컴파일하는경우

$gcc -o main main.c fun1.c fun2.c


ㄴ) 나눠서 컴파일 하는 경우.

$gcc -c main.c

$gcc -c fun1.c

$gcc -c fun2.c

$gcc -o main main.o fun1.o fun2.o


    - ㄴ)의 경우 파일 하나를 고쳐서 다시 컴파일하는 경우 유리하다. 파일 하나가 아니라 모듈 단위로 컴파일 하는 경우라면 더욱 더 ㄴ)의 형태로 가는 것이 좋다.


    2.3 어셈블리까지 진행 [-s]


    2.4 최적화 수준 지정(-Olevel]

      - 숫자가 클수록 높은 최적화


    2.5 디버깅 옵션 [-g]


    2.6 추가 디파인 [-Dmacro[=defn]...]


    2.7 라이브러리 디렉토리 지정[-Ldir...]


    2.8 모든 에러 출력 [-Wwarn...] [-Wpedantic]


    2.9 추가 헤더파일 디렉토리 지정 [-Idir...]

'IT관련 지식들' 카테고리의 다른 글

gdb 디버거 사용하기.  (0) 2016.07.26
makefile  (0) 2016.07.25
우분투에서 Git 시작하기  (0) 2016.07.07
가상 머신 네트워크 설정.  (0) 2016.06.30
소켓 통신  (0) 2016.06.30
posted by 동글동글82
:
IT관련 지식들 2016. 7. 7. 16:10

ubuntu 14.04에서 git 시작하기


1. 프로그램 다운로드

~/$ sudo apt-get install git qgit gitk git-svn


2. 사용자 등록

~/$ git config --global user.name "kangmin" 

~/$ git config --global user.email "kangmini82@gmail.com"


3. 초기화

~/$mkdir gitrepository

~/gitrepository$ git init


4. 사용하는 프로그램 등록 및 동기화

~/project$mkdir gitrepository

~/project/gitrepository$git clone ~/gitrepository/

~/project/gitrepository$git add *

~/project/gitrepository$git commit -m "Working all thread"


* GUI 환경

~/project/gitrepository$gitk


관련사이트

https://git-scm.com/book/ko/v2

https://rogerdudler.github.io/git-guide/index.ko.html

'IT관련 지식들' 카테고리의 다른 글

makefile  (0) 2016.07.25
gcc 컴파일러.  (0) 2016.07.25
가상 머신 네트워크 설정.  (0) 2016.06.30
소켓 통신  (0) 2016.06.30
싸이로드 세미나(카메라)  (0) 2016.06.30
posted by 동글동글82
:
IT관련 지식들 2016. 6. 30. 16:42

가상 머신의 네트워크 설정은 다음과 같다.


1. NAT(Network Address Translation)

  - PC가 IP공유기 역할을 수행한다.

  - 가상머신은 내부 네트워크를 사용하며 PC와는 다른 대역의 IP를 부여한다.  

    ex) PC : 192.168.0.2 , 가상머신 ; 10.0.0.2


2. 브릿지

  - 가상머신은 PC와 동등한 PC로 인식한다.

  - PC와 같은 대역의 IP를 부여받는다.

    ex) PC : 192.168.0.2 , 가상머신 : 192.168.0.3


3. Host only.

  - 가상머신은 인터넷을 할 수 없다.

    ex) PC : 192.168.0.2 , 가상머신 : IP 없음.


버추얼 머신 5.0.20을 설치하면 이외에 NAT 네트워크, 내부네크워크, 일반 드라이버 3가지 메뉴가 더 있다. 이에 대해서는 실험을 해 본 후 추가한다.

'IT관련 지식들' 카테고리의 다른 글

gcc 컴파일러.  (0) 2016.07.25
우분투에서 Git 시작하기  (0) 2016.07.07
소켓 통신  (0) 2016.06.30
싸이로드 세미나(카메라)  (0) 2016.06.30
UML(Unified Modeling Language).  (0) 2016.06.20
posted by 동글동글82
: