Shinnara's Blog
Talking with Shinnara :: NaraTalk.com


새로운 막강(?) PC가 제 손에 들어옴에 따라 새롭게 개발 환경을 꾸몄습니다.
윈도우 재 설치(조립 업체에서 이건 해줘서...), 오피스 등등의 프로그램 깔고,
C 개발환경 설치하고 등등.. 며칠의 시간이 흘렀습니다.

그리고 사이드 웍으로 하고 있는 자바 어플리케이션 개발을 위해 Eclipse를 깔고, Subversive plugin 과 Connector를 설치했는데도 Connector가 없다면서 실행이 안되더군요.

구글 신의 도움을 받아 업데이트 사이트를 변경해보았습니다.

http://www.polarion.org/projects/subversive/download/eclipse/2.0/update-site/

이 사이트에서 최신의 Connector와  SVNKit을 설치하니 정상적으로 동작...^^

이것때문에 하루동안이나 고생했네요.


0 Trackback, 0 Comment

TRACKBACK :: http://naratalk.com/trackback/313 관련글 쓰기

댓글을 달아 주세요

 조금 전에 스텔라리움이라는 오픈소스 천문 프로그램에 대한 소개글을 올렸습니다. 글에 써 있듯이 한글 문제로 인해 실행이 안되는 현상이 보였습니다. 그래서 오픈 소스인 만큼 소스를 받아서 고쳐볼까하는 생각을 하게 되었습니다. 평소에 Java 를 주된 개발 언어로 사용하다보니 C 와 관련된 툴은 거의 사용하지 않습니다. 이상하게도 저랑 C는, 특히 Visual C++ 은 별로 친하지 않더군요. 회사나 학교에서도 거의 Java 만 사용합니다.

 그런데 요즘 들어 오픈소스 커뮤니티에 대해 많은 관심을 가지게 되면서 C의 필요성을 크게 느끼고 있습니다. 그래서 예전 기억을 살려 다시금 C를 하려고 하는데, 그렇다고 Visual C++ 툴을 이용하고 싶지는 않았습니다. 평소에 자주 이용하는 Eclipse 를 개발툴로 정하고, Eclipse 에서 어떻게 하면 C를 사용할 수 있는 지를 알아보았습니다.

 Eclipse 의 홈페이지에 가보니 C 개발을 위한 CDT 라는 환경을 지원합니다. 특별히 다운받기 보다는 Eclipse 의 업데이트 과정을 통해서 설치를 할 수 가 있는데, 오늘자로볼 때 최신 CDT 버전은 4.0.1 입니다. (관련 페이지는 이곳 ) 그런데 4.0.x 는 Eclipse 3.3 이상에서 실행하도록 되어 있습니다. 제가 그동안 쓰고 있던 Eclipse 의 버전이 3.2 였던 관계로 이클립스를 다시 설치해야 했습니다. 오늘을 기준으로 최신 버전은 3.3.1.1 입니다.

설치를 하고나서, Eclipse Update 를 통해 CDT 를 설치합니다.  설치를 끝내면 다시 시작하라는 메시지가 나옵니다. Eclipse 를 다시 시작해 보니 다음과 같은 모습입니다.


사용자 삽입 이미지

사용자 삽입 이미지

Welcome 화면에 C/C++ Develpment 라는 항목이 생겨있네요.  File 메뉴에서도 C/C++ 을, Perspective 에서도 C/C++ 을 설정할 수 있습니다.

제대로 설치가 되었느지를 확인해보기 위해 helloworld.c 를 만들어보았습니다.

#include <stdio.h>

void main()
{
    printf("HelloWorld");
}

하도 오랫동안 C를 안써봤더니 이게 맞는 소스인지는 모르겠습니다. 별다른 메시지가 나타나지 않길래 Run 을 해보았습니다. 그런데 이게 왠일입니까? 다음과 같은 에러를 나타내며 실행이 안됩니다.

사용자 삽입 이미지

"Launch failed no binaries"
binary 가 없다면서 실행이 안되는다는 것입니다. 도대체 무슨 소린지... 그래서 CDT Help 를 찾아보았습니다.

C/C++ Development User Guide 의 가장 처음 문서 "Before you begin" 을 보니 다음과 같은 내용이 있습니다.

Windows

For windows, MinGW, and Cygwin are the two main choices for acquiring the GNU toolchain:

  • Cygwin is a port of the Linux environment to Windows. It provides a compatibility layer in a set of DLLs. These DLLs are GPL licensed, making any code that links to them also subject to the GPL. Cygwin, however, does provide the fullest implementation of the GNU toolchain by supporting the GNU libc C runtime library.


  • MinGW is a port of the GNU toolchain to the Windows platform. The biggest difference over Cygwin is that MinGW uses the Windows C runtime libraries (mscvrt) instead of GNU's libc. As a result, a compatibility layer is not required, thus avoiding the GPL issues with Cygwin. There are differences, though, between the Windows and GNU C runtime libraries that will make writing portable applications more difficult.

    However, MinGW provides the best integration support with the CDT due to it's direct support for the Windows environment.


    The following are instructions and links on how to install the current version of MinGW. Note that these links may become inaccurate over time as new versions of MinGW components are introduced. Please check the MinGW File Release section for the latest versions.


    1. Download and run the MinGW setup program, MinGW-5.1.3.exe.
    2. Select download and install the MinGW base tools and the g++ compiler. You may select the Current or Candidate version of these tools. You may also install any of the other available compilers as well.

      Do not install the MinGW Make feature as the MSYS version of make from step 5 is a more complete implementation of make.

    3. The MinGW setup program currently does not install the gdb debugger. To install the debugger, download the file from the following location: gdb-6.6.tar.bz2
    4. Extract the contents of the file gdb-6.6.tar.bz2 to the same location where you installed MinGW.
    5. If you want to use Makefile projects, download and run the setup program from the following location: MSYS-1.0.10.exe. MSYS provides an implementation of make and related command line tools. This is not required for other types of projects with the MinGW toolchain, which use CDT's internal build tools to perform the build

Windows 에서 CDT를 사용하기 위해서는 cygwin 이나 MinGW 가 필요하다는 것입니다. 그래서 MinGW 를 설치하였습니다.

MinGW 5.1.3 다운로드

저는 Automated MinGW Installer를 다운받아 실행했습니다. 설치를 하게되면 설치할 Component 를 선택하는 메뉴가 나오는데, 위의 설명에서와 같이 MinGW basetools 과 g++ compiler 를 선택합니다. 위의 설명에 보면 절대로 MinGW Make는 설치하지 말라고 나옵니다.

사용자 삽입 이미지

설치할 디렉토리를 선택하면 인스톨러가 설치 파일을 다운로드하여 설치를 해줍니다.

설치가 끝나면 디버거를 설치하는데요, 여기 에서 gdb-6.6.tar.bz2 를 다운받아 MinGW 의 설치디렉토리에 압축을 풉니다. 저의 경우, 몇몇 화일이 이미 존재한다고 나오길래 덮어썼습니다. ^^

Makefile 을 이용하기 위해서는 MSYS 를 설치합니다. 설치파일은 MSYS-1.0.10.exe

기본 설치가 끝나면 post-install 과정에서 mingw 의 설치 디렉토리를 d:/mingw 와 같은 형식으로 입력해줍니다.

그리고 나서 Eclipse 를 새로 시작하여 새 프로젝트를 생성해봅니다.

C Project 를 시작하려하니 오른쪽 toolchain 에 MinGW GCC 라는 것이 보입니다.

사용자 삽입 이미지

제대로 동작하는 지를 알아보기 위해 Hello World ANSI C Project 를 선택합니다.

Project Wizard 가 끝나고 나면 소스 코드를 볼 수 있는데 다음과 같이 바꿔보았습니다.

/*
 ============================================================================
 Name        : helloworld.c
 Author      : Shinnara
 Version     :
 Copyright   : It's Free
 Description : Hello World in C, Ansi-style
 ============================================================================
 */

#include <stdio.h>
#include <stdlib.h>

int main(void) {
    puts("Hello World! I'm Shinnara"); /* prints !!!Hello World!!! */
    return EXIT_SUCCESS;
}


Run 을 해보니 역시 제대로 동작하는 군요. 블로그에 올리기위해 이클립스를 프레임을 잔뜩 줄여봤는데 모습이 이상하군요. 어쨌든 제대로 동작하는 것을 확인할 수 있습니다.

사용자 삽입 이미지


이제 개발환경이 갖추어졌으니, 멋지게 개발하는 일만 남았네요. Eclipse, 참 좋은 개발 환경입니다 ^^



0 Trackback, 6 Comment

TRACKBACK :: http://naratalk.com/trackback/204 관련글 쓰기

댓글을 달아 주세요

  1. BlogIcon 도막  댓글주소  수정/삭제  댓글쓰기

    좋은 정보 잘 읽고 갑니다!! 근데 디버깅 하는 법을 잘 모르겠네요.
    비쥬얼스튜디오는 코드 따라서 디버깅 되는데 이건 변수 값만 변하는 것만 나오는 거 같아서요...

    혹시 저렇게 디버깅 되는게 맞나요?

    2008/08/07 16:10
  2. 루돌프  댓글주소  수정/삭제  댓글쓰기

    저도 주로 자바만 쓰다가, 비슷한 이유에서 오랜만에 C/C++를 사용해보려고 했는데..
    이상하게 visual C++ 은 사용하기가 싫더라구요. (이클립스 애용자입니다.)
    역시 같은 이유로 CDT를 다운받았는데, 같은 이유로 컴파일이 되지 않아 난감해하고 있었는데ㅠㅠ
    포스팅으로 큰 도움 얻고 갑니다!! 시간을 크게 절약하게 되었네요^^ 감사합니다!

    2009/06/16 09:35
  3. BlogIcon 두두리이  댓글주소  수정/삭제  댓글쓰기

    감사합니다 :)
    저는 원래 태생이 VS 인데
    근래 몇달간 java 쓰면서 Eclipse 만 쓰다가
    다시 VS로 돌아가려니 단축키가 손에 익지 않아 ;
    c/c++ 개발환경 골라보던 중 들렀답니다 ㅎ

    2009/06/16 16:51
  4. 지나가다  댓글주소  수정/삭제  댓글쓰기

    감사합니다.
    코멘트라도 달고가야 예의일듯해서 하시는일 대박나세요

    2009/07/16 14:29
  5.  댓글주소  수정/삭제  댓글쓰기

    비밀댓글 입니다

    2009/07/30 03:15
  6. BlogIcon 지돌스타  댓글주소  수정/삭제  댓글쓰기

    좋은 정보 잘얻어갑니다. 감사합니다.

    2009/12/16 17:42


세 번이상 반복되는 것은 자동화하라.

개발자 자신을 위한 툴을 만들자.

제가 요즘 항상 마음속에 품고 있는 말입니다. 개발이나 어떤 일을 할 때, 보다 생산성이 높고, 실수할 확률이 적은 방법을 항상 찾으려고 하고 있답니다.

얼마전부터 Ant 와 CVS 등을 이용해서 개발 환경을 좀더 편리하게 바꾸고 있는데, 제가 작업하는 Windows 와 FreeBSD 는 Ant 와 FTP, CVS 를 이용해서 작업이나 디플로이등이 무척 편리해졌습니다.  하지만 최종적으로 디플로이를 해야하는 서버의 경우는 외부 네트워크에 있는 데다가 SSH, SFTP 로만 접속이 가능합니다. Ant 의 task 를 보니 sftp 는 지원을 하지 않더군요. 그래서 그동안은 FileZilla 를 이용해서 수동으로 디플로이를 했습니다.

하지만, 개발을 진행하면서 하나, 둘 수정 사항이 생기고 디플로이 작업이 많아지자, 위에 써놓은대로 자동화를 해야 겠다는 생각이 들었습니다. 그래서 찾은 것이 maverick-ant


그래서 당장 테스트를 해보았습니다.

위 홈페이지에서 받은 파일을 압축을 풀면 lib 디렉토리에 maverick-ant.jar 가 있습니다.  이 파일을 클래스패스에서 찾을 수 있도록 해주는 것이 필요합니다. 또는 build.xml 에서 classpath 를 지정해 줄 수도 있습니다. 저 같은 경우는 eclipse 에서 쓰고자 했기 때문에 지난번 포스팅: Eclipse에서 Ant 를 활용하는 방법 에서와 같이 Ant 의 Runtime 에 등록해 둡니다.

이것으로 환경설정은 끝입니다.

이제 Ant 설정화일(build.xml 과 같은)을 만들어야 하는데, 제가 쓰고 있는 설정화일의 내용입니다.


<?xml version="1.0" encoding="utf-8" ?>
<project name="SFTP_TO_108SERVER" default="upload" basedir=".">
    <property name="ftp.server" value="123.123.123.123" />
    <property name="ftp.port" value="220" />
    <property name="ftp.home.dir" value="/usr/local/apache-tomcat/webapps/bridge/WEB-INF" />
    <property name="ftp.userid" value="hkshin" />
    <property name="ftp.pw" value="123.123.123" />
   
    <taskdef name="ssh" classname="com.sshtools.ant.Ssh" />
   
    <target name="upload">
        <ssh host="${ftp.server}" port="${ftp.port}"
             username="${ftp.userid}"
             password="${ftp.pw}"
             version="2">
            
             <sftp action="put" remotedir="${ftp.home.dir}" verbose="true">
                 <fileset dir="." >
                     <include name="**/*.java" />
                     <include name="**/*.properties" />
                 </fileset>
             </sftp>
          </ssh>
    </target>
   
</project>

보시다시피 확장자가 java 와 properties 인 내용만 전달하는 것입니다.

내용이 너무 간결하지 않나요? ^^ 제대로 동작하는 거 확인하고 나서 얼마나 즐거웠는지..
아래는 eclipse 에서 동작하는 모습입니다.

upload:
      [ssh] Initializing J2SSH Maverick
      [ssh] SSH2 is supported
      [ssh] Configuring SSH contexts
      [ssh] SSH2 default cipher Blowfish will be used
      [ssh] Setting SSH2 default MAC to MD5
      [ssh] Creating connection to 123.123.123.123:220
      [ssh] Connecting....
      [ssh] Authenticating hkshin
      [ssh] Performing password authentication
      [ssh] Password Authentication completed
      [ssh] Operating system is Linux [linux-gnu]
      [ssh] Using simple pattern matcher
      [ssh] Setting the remote directory
      [ssh] Remote directory is /usr/local/apache-tomcat/webapps/bridge/WEB-INF
      [ssh] Sending files
      [ssh] Local dir is D:\XXXXXX
      [ssh] Transfering 12 files
       ....
      [ssh] transferring D:\XXXXXXX\Util.java to /usr/local/apache-tomcat/webapps/bridge/WEB-INF/src/XXXXXXX/Util.java
      [ssh] 12 files Sent
      [ssh] Disconnecting from 123.123.123.123
BUILD SUCCESSFUL
Total time: 13 seconds



1 Trackback, 3 Comment

TRACKBACK :: http://naratalk.com/trackback/127 관련글 쓰기

  1. Subject: eclipse에서 ant ftp task 사용하기

    Tracked from SJAVA :: HTTP://WWW.SJAVA.NET  삭제

    ANT로 빌드파일(build.xml)을 만들고, 빌드파일을 통해서 컴파일된 바이너리를 FTP로 전송할 수 있는 기능이 있습니다. 단계는 아래와 같습니다. 1. ftp 라이브러리 설치 http://commons.apache.org/net/의 최신버전을 다운로드 받습니다. 다운로드 받은 라이브러리인 commons-net-1.x.x.jar 파일을 이클립스가 설치된 폴더/plugins/ant설치버전/lib 폴더에 카피를 합니다. 참고로, 현재 최신버전은 c..

    2008/06/27 11:40

댓글을 달아 주세요

  1. tester  댓글주소  수정/삭제  댓글쓰기

    궁금한 사항이 있어서 그런데요.. 이클립스에서 어떻게 실행해야 하나요? Run As 로 해서 ANT로 실행하니 에러가 발생하는데...

    2007/11/21 17:53
  2. Fox  댓글주소  수정/삭제  댓글쓰기

    퍼갈꼐요^_^

    2009/01/05 17:05


사용자 삽입 이미지
며칠전에 올린 Ant 관련글 에서처럼 Ant 를 사용하기 시작했습니다. 커맨드 라인에서 개발하다보니 컴파일이 귀찮아져서 자동화하기 위해, 그동안 미뤄왔던 Ant 에 대한 학습(?)을 하게 된 것인데, 이게 생각보다 편하더군요.그리고 무지 훌륭한 기능들이 Task 라는 형태로 지원되고 있구요.. 하여간 적극 추천입니다.

그런데, 서버에 접속하서 커맨드 라인 또는 vi, 아니면 FTP 연결 기능이 있는 텍스트 에디터(예: acroedit )를 사용하다 보니, 이것 또한 여간 귀찮은게 아니더군요. 특히나 클래스나 인터페이스가 여러개일 경우 해당 클래스에 어떤 메소드가 있는지를 찾는게 제일 고역이었습니다. 클래스가 몇개 되지도 않는데 이러니, 규모가 더 커지면 정말 힘들겠더군요.  그래서 다시 IDE 에서 작업해야 겠다는 생각을 하게되었습니다. IDE(주로 eclipse)에서 작업을 하더라도 작업 내용을 해당 서버에 올리면서 테스트를 해야하기에 FTP 작업이 필요하게 되었습니다.

Eclipse 에서 FTP를 사용할 수 있게 하는 플러그인은 여러가지가 있는 것으로 알고 있습니다. 하지만 전에 설치해본 결과, 제대로 설치가 되지 않는 등의 문제로 안쓰게 되곤 했습니다. 그러던 중 Ant 를 이용하여 Eclipse 에서 FTP 작업을 할 수 있다는 글을 보게되었습니다. (원문 : 네이버 로그인이 필요할수도 있습니다.)

Eclipse 에서 Ant 를 이용한 FTP 작업을 하기위해서는 추가적인 라이브러리가 필요합니다. 위의 원문에서는 두개의 파일이 필요한 것으로 되어있는데, 제 환경(Eclipse 3.2.2)에서 확인해본 결과 commons-net 은 이미 플러그인으로 등록이 되어 있어서 추가적으로는 jakarta-oro 만 설치하였습니다.

jakarta-oro 는 여기서 다운받으실 수 있습니다. 이번 설치에 쓰인 파일은 jakarta-oro-2.0.8.jar 입니다.
다운받아서 압축을 풀고 디렉토리안에 있는 jakarta-oro-2.0.8.jar  파일을 Preferences->Ant->Runtime->Classpath->Ant Home Entries 에 Add External Jars 를 이용하여 등록합니다.

다시 살펴보니 이미 ant-apache-oro.jar 가 플러그인으로 들어가 있네요. 그래서 위의 내용은 삭제합니다. 따라서 Ant 를 이용해서 FTP 작업을 하기위해 특별히 해야할 작업은 없습니다 ^^


이것으로 Eclipse 에서 Ant 를 이용하여 FTP를 사용하기 위한 준비 작업이 끝납니다.


사용자 삽입 이미지
이제 작업을 위한 Ant Build 화일을 만들어주어야 합니다.

제 경우는 TEST 라는  프로젝트를 만들고 그 아래에 ftp_upload.xml 이라는 파일을 만들었습니다.

아래는 그 내용입니다.

<project name="TEST" default="ftp_upload" basedir=".">

    <property name="ftp.server" value="192.168.0.156" />
    <property name="ftp.home.dir" value="/usr/home/shinnara/java/ftptest" />
    <property name="ftp.userid" value="shinnara" />
    <property name="ftp.pw" value="123456" />
   
   
    <target name="ftp_upload">
        <ftp server="${ftp.server}"
             remotedir="${ftp.home.dir}"
             userid="${ftp.userid}"
             password="${ftp.pw}">
             <fileset dir="."/>
        </ftp>
    </target>
   
    <target name="ftp_getSource">
        <ftp action="get"       
             server="${ftp.server}"             
             remotedir="${ftp.home.dir}/src"
             userid="${ftp.userid}"
             password="${ftp.pw}">
             <fileset dir="src"/>
        </ftp>           
    </target>
   
    <target name="ftp_clean">
        <ftp action="del"
             server="${ftp.server}"
             remotedir="${ftp.home.dir}"
             userid="${ftp.userid}"
             password="${ftp.pw}">
             <fileset>
                 <include name="**" />
             </fileset>
        </ftp>   
        <ftp action="rmdir"
             server="${ftp.server}"
             remotedir="${ftp.home.dir}"
             userid="${ftp.userid}"
             password="${ftp.pw}">
             <fileset>
                 <include name="**" />
             </fileset>
        </ftp>
    </target>
   
</project>


위의 Ant 빌드 파일은 모두 세개의 target 을 포함하며 내용은 그리 다르지 않습니다. clean 의 경우 action 을 del 만 할 경우, 디렉토리는 그대로 남기때문에 화일을 지우고 디렉토리까지 지우는 부분을 추가하였습니다.

이렇게 하고 Eclipse 의 Windows->Show View 에서 Ant 를 선택하면 Ant View 가 생기는데 여기에 빌드 화일을 추가하면 위의 세 target 이 나타납니다. 원하는 작업을 선택하여 실행버튼을 누르면 Console 을 통해 확인할 수 있습니다.

Ant 를 알게 되니 작업이 많이 편리해지더군요. 그동안 귀찮아서 안하던 것들, 배워야 할 것들을 이 기회에 도전해보려고 합니다.

Ant 는 Ant 홈의 manual에 아주 자세히 설명되어 있고, 처음 사용하시는 분은 다음 자료를 참고하시면 많은 도움이 될 것입니다.



3번 이상 반복되는 작업은 자동화하고, 개발자 자신을 위한 툴을 만들자







TAG ant, Eclipse, FTP, Task
1 Trackback, 0 Comment

TRACKBACK :: http://naratalk.com/trackback/96 관련글 쓰기

  1. Subject: eclipse에서 ant ftp task 사용하기

    Tracked from SJAVA :: HTTP://WWW.SJAVA.NET  삭제

    ANT로 빌드파일(build.xml)을 만들고, 빌드파일을 통해서 컴파일된 바이너리를 FTP로 전송할 수 있는 기능이 있습니다. 단계는 아래와 같습니다. 1. ftp 라이브러리 설치 http://commons.apache.org/net/의 최신버전을 다운로드 받습니다. 다운로드 받은 라이브러리인 commons-net-1.x.x.jar 파일을 이클립스가 설치된 폴더/plugins/ant설치버전/lib 폴더에 카피를 합니다. 참고로, 현재 최신버전은 c..

    2008/06/27 11:39

댓글을 달아 주세요

1 
다...... (264)
Computer/Programming (106)
Links (14)
책 읽는 즐거움 (7)
끄적임 (66)
즐거운 과학 나라 (7)
일본 (5)
Study (4)