본문 바로가기
C++ 200제/코딩 IT 정보

리눅스 Flex 컴파일러 윈도우 설치 (LEX Linux GNU 버전을 Windows7)

by vicddory 2017. 1. 19.

리눅스 Flex 컴파일러 윈도우 설치 (LEX Linux GNU 버전을 Windows7)


리눅스 Flex 컴파일은 리눅스 Lex의 GNU 버전 프로그램입니다. 단순한 GNU 버전인 것만은 아니고, 많은 부분이 개선된 프로그램이라고 합니다.


MinGW 설치(윈도우즈에 리눅스 개발환경 설정하기)


1
2
flex linenos.flex
gcc lexyy.c -lfl
cs


위와 같은 리눅스 Flex 컴파일 명령어들을 사용하기 위해선 윈도우즈에 리눅스 개발환경을 설정해야 합니다. 리눅스에선,


1
2
yum install bison
yum install flex
cs


와 같은 명령어로 쉽게 설치해야 사용할 수도 있습니다. 저와 같이 리눅스에서 사용하는 컴파일러인 gcc를 사용하기 위해선 MinGW를 윈도우7에 먼저 설치해야 합니다. (MinGW , Minimalist GNU for Windows)


홈페이지에 접속해 파일을 다운 받아야 합니다.


다운로드 링크 - http://www.mingw.org/ [클릭]

좌측의 Downloads를 클릭합니다.


MinGW 설치 파일 다운로드[Windows LEX 설치, 임베디드 프로그래밍]



링크를 클릭하여 파일을 다운 받습니다. 파일을 설치합니다.


TDM-GCC 다운로드 및 설치


그러나 위와 같이 설치하였는데 이상이 발생할 시엔 http://tdm-gcc.tdragon.net/download [클릭] 여기로 접속해 다른 경로로 파일을 받아 보는 것도 괜찮습니다.


TDM GCC 다운로드[Windows LEX 설치, 임베디드 프로그래밍]


중앙에 tdm-gcc-4.5.2 를 클릭하여 받으면 됩니다. 하지만 결국엔 이름만 다르다 뿐이지 같은 거의 같은 파일이기 때문에 윈도우7에서 큰 차이는 없습니다.


MinGW 윈도우 설치[Windows LEX 설치, 임베디드 프로그래밍]


http://www.mingw.org/에서 받은 파일은 좌측,

http://tdm-gcc.tdragon.net/download에서 받은 파일은 우측으로서, 설치 과정도 조금은 다릅니다.


저는 우측의 화면처럼 설치하였고, 설치 결과 폴더를 확인하면 이렇습니다. 리눅스 Flex 컴파일을 윈도우7에서 사용하기 위해 둘 중 하나만 필요합니다. 둘 다 설치해도 상관없어요.


MinGW32 설치폴더[Windows LEX 설치, 임베디드 프로그래밍]


MinGW에서 받은 파일로 설치를 하면 생성되는 폴더에 32라는 숫자는 빠지게 되니, 왜 폴더명이 다를까 의구심을 갖진 않으셔도 됩니다. 리눅스 Flex 컴파일러를 사용하기 위해서 절반 가량은 완료되었습니다. gcc lexyy.c -lfl 과 같은 명령어를 사용하기 위해서 추가해야할 파일이 존재합니다.

Unix Utils 명령어 추가


UnxUtils란 압축 파일을 받아 그 안에 존재하는 exe 파일을 이용해 윈도우7 cmd에서도 gcc와 같은 리눅스 명령어를 사용하도록 설정해야 합니다.



위 링크를 통해 UnxUtils.zip 파일을 다운로드 한 뒤, 압축을 해제 합니다.


UnxUtils 폴더[Windows LEX 설치, 임베디드 프로그래밍]


wbin 폴더에 리눅스용 exe 파일들이 존재합니다. 가장 중요한 리눅스Flex컴파일러 flex.exe 파일도 존재하지요. 여기서 이 파일들을 이미 설치된 MinGW32 폴더로 복사해야 합니다.


usr\local\wbin 파일들을 모두 C:\MinGW32\bin으로 복사.

usr\local\lib 파일들을 모두 C:\MinGW32/lib으로 복사.


MinG32 환경 설정, 윈도우7


그 뒤, MinGW32 폴더의 패스를 등록합니다.


내컴퓨터 우클릭 - 속성 - 고급 - 환경변수 - 사용자 변수의 path에 "C:\MinGW32\bin" 등록


만약, http://flex.sourceforge.net/ [클릭] 에서 리눅스 Flex 컴파일 설치 파일을 다운 받아 C:\Flex와 같이 패스 등록을 해준 상태라면, MinGW32 폴더의 패스 등록은 생략하셔도 됩니다.


MinGW32 환경변수 추가[Windows LEX 설치, 임베디드 프로그래밍]


저와 같은 경우라 보면 되겠네요. 저는 리눅스 Flex 컴파일러 설치 파일을 미리 다운받아 설치를 했는데 MinGW32 폴더의 패스를 등록하지 않아도 실행이 잘 됩니다. 여기까지 진행이 잘 되었으면 이제 리눅스 Flex 컴파일 사용할 수 있습니다.


Flex 컴파일 예제 소스


아래 예제 소스를 통해 실행해 보겠습니다.


1
2
3
4
5
6
7
8
9
10
11
%{
#include <stdio.h>
int lineno = 1;
%}
line .*\n
%%
{line} { printf("%5d %s",lineno++,yytext); }
%%
main()
{ yylex(); return 0; }
</stdio.h>
cs


이 소스는 개행(\n)이 발생할 때 마다 라인의 수를 화면에 찍어줍니다. 제가 실제로 실행한 과정은 아래와 같습니다.


리눅스 플렉스 실행 결과[Windows LEX 설치, 임베디드 프로그래밍]


- ls 명령어가 잘 먹힙니다.

- flex lineno.l 명령어로 lex.yy.c파일이 생성됩니다.

- gcc lex.yy.c -o lineno -lfl 명령어로 컴파일이 되며 실행 파일이 생성됩니다.

- 실행 파일(.exe)이 잘 동작합니다.


리눅스 Flex 컴파일러 윈도우 설치 (LEX Linux GNU 버전을 Windows7)

댓글