리눅스 기초
EDISON 플랫폼은 리눅스 기반으로 개발되어 있어서 시뮬레이션 SW의 경우에도 리눅스에서 컴파일과 실행이 되는지 확인해야 합니다. 이를 위해 필요한 기본적인 내용들을 정리하였습니다.
리눅스 기본 명령어
명령어 | 설명 | 예제 |
---|---|---|
ls | 파일 리스트 보기 | |
cd | 디렉토리를 변경 | cd cgi-bin : 하부 디렉토리인 cgi-bin으로 들어감. cd .. : 상위 디렉토리로 이동 cd ~ : 어느곳에서 든지 자기 홈디렉토리로 바로 이동 |
mkdir | 디렉토리를 생성 | mkdir download : download 디렉토리 생성 |
rm | 파일 삭제 | rm test.html : test.html 화일 삭제 rm -rf <디렉토리> : 디렉토리 전체를 삭제디렉토리> |
pwd | 현재 경로 보기 | |
chmod | 퍼미션 조정 | chmod 755 a.sh : a.sh파일의 퍼미션을 755로 조정 |
vi | vi 에디터 실행 | vi newfile : vi 편집기 상태로 들어감 |
리눅스 필수 명령어
명령어 | 예제 |
---|---|
./x | x 프로그램 실행 (현재 디렉토리에 있는 것) |
↑/ ↓ | 이전에(↑) / 다음에(↓) 입력했던 명령어 |
cd x | 디렉토리 X로 가기 |
cd .. | 한 디렉토리 위로 가기 |
x 다음 [tab] [tab] | x 로 시작하는 모든 명령어 보기 |
ls (또는 dir) | 디렉토리 내부 보여주기 |
mv x y | 파일 x를 파일 y로 바꾸거나 옮기기 |
cp x y | 파일 x를 파일 y로 복사하기 |
rm x | 파일 지우기 |
mkdir x | 디렉토리 만들기 |
rmdir x | 디렉토리 지우기 |
rm -r x | 디렉토리 x를 지우고 하위도 다 지우기 |
exit | 시스템 종료 |
Vim Editor
리눅스 시스템에 설치되어 있는 기본적인 워드 프로세서로 기본적인 사용법을 숙지하고 있어야 합니다. 본 가이드에서는 Vim Editor에 대한 세부적인 사용법에 대해서는 설명하진 않겠습니다. 아래 사이트를 참고하여, Vim Editor에 대한 사용법을 습득하길 바랍니다.
리눅스에서 컴파일 하기
Makefile
리눅스 상에서 소스코드 컴파일을 편리하게 해주는 쉘 스크립트 파일입니다. 관련 상세한 정보는 아래 링크 사이트를 참고 하시길 바라며, 본 가이드에서는 makefile 셈플 파일에 대한 설명만 하도록 하겠습니다.
Sample 예제 파일 구성
파일 명 | 설명 |
---|---|
main.c | main.c |
sub1.c, sub1.h | 라이브러리1 |
sub2.c, sub2.h | 라이브러리2 |
Makefile | Makefile file |
예제 파일
main.c
#include <stdio.h>
#include "sub1.h"
#include "sub2.h"
int main()
{
myprint_sub1();
myprint_sub2();
return 1;
}
sub1.h
void myprint_sub1();
sub1.c
#include <stdio.h>
#include "sub1.h"
void myprint_sub1()
{
printf("I am sub1\n");
}
sub2.h
void myprint_sub2();
sub2.c
#include <stdio.h>
#include "sub2.h"
void myprint_sub1()
{
printf("I am sub2\n");
}
Makefile
# Makefile example
CC = gcc
CLAGS = -o
OBJS = main.o sub1.o sub2.o
SRCS = $(OBJS:.o=.c)
TARGET = test
all: $(TARGET)
$(TARGET) : $(OBJS)
$(CC) $(CLAGS) $@ $(OBJS)
clean :
rm -rf $(OBJS)
(1) CC = gcc
사용하고자 하는 컴파일러 명령어를 입력하면 된다. (icc, gcc, ifort, f90 등…)
(2) CLAGS = -o
컴파일 옵션을 넣어 주면 된다. 세부 옵션은 각 컴파일러 매뉴얼 참조
-o 옵션은 컴파일 결과 파일의 이름을 지정해주겠다는 명령어이다. 여기에서는 결과 파일명을 TARGET =test 로 지정해주었다.
(3) OBJS = main.o sub1.o sub2.o
컴파일에 필요한 Object 파일과 Source 파일 명을 써주면 된다. 컴파일 과정에서 Object 파일은 자동으로 생성되며, (3)에 이름을 지정해 주어야 된다.
- (4)
SRCS = $(OBJS:.o=.c)
의 $(OBJS:.o=.c)는 main.c sub1.c sub2.c을 컴퓨터가 OBJS를 읽어 .o를 .c 로 수정해 준 것이다. - fortran 의 경우에는 $(OBJS:.o=.f90)라고 입력하면 된다.
(5) TARGET = test
출력 파일 명 설정 CLASS에 –o 옵션을 지우면 안된다.
(6)
all: $(TARGET)
$(TARGET) : $(OBJS)
$(CC) $(CLAGS) $@ $(OBJS)
make all 명령어를 설정하는 부분이며, 모든 Source 파일을 컴파일 하고 생성된Object 파일들을 가지고 링크과정을 거처 실행 파일을 만드는 부분이다. $(CC) 앞에 <tap>
키를 입력해야 한다.
(7)
clean :
rm -rf $(OBJS)
make clean 명령어를 설정하는 부분이며, 컴파일 과정에서 생성된 Object 파일을 지우는 부분.
- Makefile 실행하기
- 실행 파일 생성 : make all
- 생성된 Object 파일 삭제 : make clean
완성된 Makefile과 소스 파일을 가지고 실행 파일을 만들어 보면 아래와 같다.