반응형

정적 라이브러리 만들어보기

라이브러리, 다양한 오브젝트 파일들을 포함하는 하나의 파일로 정적 라이브러리와 동적 라이브러리로 나뉜다.

정적 라이브러리는 라이브러리, 오브젝트파일들을 link해서 하나의 실행파일 안에 포함시킨다. 이 방식으로 (.out) 실행파일이 만들어진다.

 

1.    func1.c func2.c 라는 함수 모듈 만들기

$ vi func1.c

$ vi func2.c

그 안에는 함수 만들기(C언어 이용)

                           

 

 

         

              

2. 헤더파일 만들기(조건부 컴파일)

 

 

 

$ vi funcs.h 편집창을 켠 뒤, 위와 같이 입력한다한번만 include하기 위해 #ifndef를 이용. 

 

$ mkdir include                   include라는 폴더를 만들고

 

$ mv funcs.h include            그 안에 funcs.h를 저장한다.

 

l  #ifndef: 매크로 이름이 선언되어 있지 않을 경우에 매크로를 정의한다.

l  #ifdef:  매크로가 정의되어있으면 컴파일을 수행한다.

 

 

 

3.    Myapp.c에서 main 만들기. 직접 만든 함수라이브러리를 사용한다.

#include "funcs.h"           <- 직접 만든 라이브러리

이제 hi name 함수를 사용 가능

 

 

4.     다른 라이브러리 추가 없이 직접 만든 코드의 .o 파일을 만든다.

$ gcc-c func1.c               $ func1.o 생성

$ gcc-c func2.c               $ func2.o 생성

 

 

5.    여러 오브젝트 파일 여러 개를 하나로 묶어서 zip파일 만들듯이(오브젝트파일 연속 입력).

 

$ ar rv libfuncs.a func1.o func.o

           func1.o, func2.o 파일을 하나로 묶어” libfuncs.a라는 정적 라이브러리(.a)를 만든다.

 

$ mkdir lib

$ mv libfuncs.a lib

여기서 만들어지는 libfuncs.a 파일을 lib폴더를 만들어 이동시킨다. (mkdir, mv 사용)

 

 

 

 

6.    Main이 들어있는 myapp.c 파일을 생성.

libfuncs.a 라이브러리 안에 있는 함수들을 쓰기 위해 include.

       

 

 

 

 

7.    $ gcc myapp.c -o myapp -I./include -L./lib –lfuncs

gcc: myapp.c라는 파일을 이용해,

-o: 이름을 설정하는 옵션. (myapp이라는 이름을 갖는 오브젝트파일을 만든다)

-I./include: 현재 dir에 있는 Include 폴더에서 헤더를 찾아보라는 옵션. (funcs.h)

-L./lib: 현재 dir에 있는 lib 폴더에서 라이브러리를 찾아보라는 옵션. (libfuncs.a)

–lfuncs: 오브젝트파일 myapp.o를 라이브러리 libfuncs.a와 링크하라는 옵션

 

 

8.     $ ./myapp실행

 

 

9.    $nm –s libfuncs.a

실제로 생성된 라이브러리./에 직접 만들 함수들이 들어가있는지, 변수들이 define됐는지 확인하는 utility.

 

 

 

 

 

 

전체 단계를 화면에 모두 출력 및 저장하는 방법

모든 단계를 저장해주는 옵션이 존재한다.

컴파일 과정을 모두 출력하고, 각 단계마다 생성되는 중간 파일은 삭제하지 않고 모두 저장하는 옵션이다.

 

# gcc -v --save-temps -o hello hello.c


1. -v
옵션: 컴파일되는 과정을 화면으로 모두 출력한다.


2. --save-temps
옵션: 컴파일 과정에서 발생되는 중간 파일을 지우지 않고 저장한다.

 

 

 

 

반응형

'컴퓨터공학 > EmbededSystem sw공학' 카테고리의 다른 글

[실습] 간단한 UpDown Game  (0) 2018.09.18
3. shell script 에서 반복문  (0) 2018.09.18
2. shell script에서 조건문  (0) 2018.09.17
1. Linux 편집기 기본 사용법  (0) 2018.09.17
반응형
숫자 맞추기 게임

 


- 0~100범위의 수 n을 랜덤하게 생성한다.
- 사용자는 생성된 숫자를 추측하여 입력한다.
- 사용자가 입력한 숫자가 n보다 큰지 작은지를 출력한다
- 사용자 입력이 n과 일치 할 때까지 반복한다.

 

[팁1] Bash에서 랜덤 숫자는 $RANDOM 변수를 통해 만들수 있음.
[팁2] Modular 연산자는 %이다.

 

 

1.     범위는 0-100까지 제한했습니다. RANDOM %100하면 0-99까지 나오고, RANDOM%101 해야 0-100 사이의 값이 나올 수 있습니다.

그 값은 변수 Rnum에 저장합니다.

2.     정답을 맞출 때까지 계속 반복하기 위해 while문을 이용했습니다.

여기서 이용한 변수 flag의 기본 값은 1입니다. 정답을 아직 맞추지 못했다는 의미입니다.

3.     사용자가 추측한 값을 Gnum에 대입한 뒤, 이를 Rnum과 비교합니다. 여기서 If문을 이용했습니다.

4.     추측한 값(Gnum)이 크거나 작은 경우에는 flag가 변하지 않다가 정답을 맞춘 경우, flag 0으로 바꿉니다. 이는 정답을 맞췄음을 의미하며 더 이상 while문이 돌아가지 않고, 게임은 끝이 납니다.

 

반응형
반응형

반복문

 

1. for loop

 

 

for 변수이름 in list

do

 

action

 

done

 

 

 

for문을 이용해 1-4까지의 합을 출력하는 코드

 

 

 

1
2
3
4
5
6
7
8
9
10
11
#! /bin/bash
 
sum=0
for i in 1 2 3 4
do
        sum=$(($sum+$i))
done
 
echo "The sum of $i numbers is : $sum."
 
 
        

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

2. while 문

 

 

 

 

while [조건 is true ]

do

 

action

 

done

 

 

 

 while문을 이용해 factorial을 구하는 코드

 

 

 

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
#! /bin/bash
 
echo "Enter the number: "
read number
 
fact=1
i=1
while [ $i -le $number ]
do
        fact=$(($fact * $i))
        i=$(($i + 1))
done
echo "The factorial of $number is $fact."
 
 

 

 

 

 

 

 

 

 

 

 

 

 

3. until 문 

 

 

until condition is false

do

 

action

 

done

 

 

 

 

1부터 10까지 2씩 증가하는 코드

 

 

1
2
3
4
5
6
7
8
9
10
11
12
#! /bin/bash
 
echo "Number"
mn=1
mx=10
 
until [ $mn -gt $mx ]
do
        echo "$mn"
        mn=$(($mn+2))
done
 

 

 

 

 

 

반응형
반응형

조건문 IF 형식

 

 

 

if [조건]; then

Action

fi

 

 

 

 

 

존재하는 파일인가.

이 파일이 directory인지 아닌지 True/false 반환

 

일반적인 읽고 쓸 수 있는 파일인가.

 

 

 

 

 

 

읽거나/ 쓸 수 있는 파일인가.

 

 

실행파일인가.

 

 

 

 

간단한 실습

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
#! /bin/bash
 
echo " Enter any color code [ R or Y or G] : "
read COLOR
echo $COLOR
 
 
if [ "$COLOR" == "R" ]
then
echo "STOP! LEAVE WAY FOR OTHERS"
elif [ "$COLOR" == "Y" ]
then
echo "get ready your way will be open shotly"
elif [ "$COLOR" == "G" ]
then
echo "Move.. It is your turn to go"
else
echo "Incorrect color code"
 
fi
 

 

 

 

 

위 코드는 신호등의 세가지 색을 입력하면 R,Y,G 중 어떤 코드인지 확인 후 해당 결과를 출력하는 코드다.

 

우선, 입력을 read로 받은 뒤 COLOR라는 변수에 저장한다. 변수를 사용할 때는 변수 명 앞에 $를 붙여야 하고, 대입이나 수정시에는 $ 없이 사용한다.

 

if, then, elif, fi를 이용해 조건문을 만든다.

 

 

 

 

결과

 

 

 

 

 

 

 

 

 

 

 

Numerical test

 

다음의 산술연산자를 지원한다.

 

 

 

==

 

!=

>

 

< 

>=

 

<=

 

 

세가지 utility가 존재한다.

 

1. expr을 이용.

 

 

 

 

2. $((     ))를 이용

 

 

 

 

3. let 사용

 

 

 

 

 

 

 

 

 

 

간단한 실습

 

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
#! /bin/bash
 
echo "Enter your age: "
read age
 
if [ $age -lt 20 ] || [ $age -gt 50 ] ; then
        echo "Sorry. you are out of the age range."
elif [ $age -ge 20 ] && [ $age -le 30 ]; then
        echo "You are in your 20s."
elif [ $age -ge 30 ] && [ $age -le 40 ]; then
        echo "You are in your 30s."
elif [ $age -ge 40 ] && [ $age -le 50 ]; then
        echo "You are in your 40s."
fi
 

 

 

 

 

 

 

나이를 입력하면 20대, 30대, 40대인지 구분하고, 그 외의 나이가 입력되면 "You are out of the range."라는 결과를 출력한다.

 

 

 

 

반응형
반응형

1. vi 편집기  띄우기

 

terminal 창에서  "vi" 또는"vi 파일명" 입력

 

 i, a, o, I, A, O를 누르면 입력모드로 텍스트 작성이 가능해진다.

 

i : Insert, 현재 커서의 위치에 글자를 삽입 
I : Insert, 커서가 있는 줄(line)의 맨 앞에 글자를 삽입 
a : Append, 현재 커서 위치의 다음 칸에 글자를 추가 
A : Append, 커서가 있는 줄(line)의 맨 뒤에 글자를 추가 
o : Open line, 현재의 줄 다음에 새로운 줄을 삽입 
O: Open line, 현재의 줄 앞에 새로운 줄을 삽입

영/한 변환: Shift+Spacebar

 

 

 

2. 편집기에서 작성 및 저장 후 끄기

 

텍스트 작성완료 후, ESC를 눌러 명령모드로 들어간다.

 

명령모드에서는 복사, 붙여넣기, 삭제 등의 편집기능을 사용할 수 있다. (텍스트 편집은 불가능.)

 

명령모드에서 콜론(:)을 누르면 콜론모드로 들어간다.

 

콜론모드에서 wq(Write and Quit)를 입력해 저장 후 종료를 한다.

 

 

 

 

 

 

 

 

 

Shell script 만들기

 

1. 편집기를 켠다

"vi test.sh" 입력

 

 

2.  편집기에 원하는 코드를 작성.

 

여기서는 이름을 입력한 뒤, 입력된 이름을 넣어 "Hello name. you are wonderful!" 이 나오도록 작성했다.

 

  

 

 

 

 

 

3. ESC를 눌러 명령모드로 전환한 뒤, :wq를 눌러 저장하고 닫는다.

 

4.  "chmod +x test.sh"를 입력해 해당파일을 실행파일로 만든다.

 

 

반응형

+ Recent posts