2/19/2016

Eclipse Neon CDT (C/C++) 기본사용 및 원격 빌드

1. Project 생성 전 확인사항  

Project 생성은 기존 소스가 존재하여도 이를 Project를 생성하여 각 기존소스 or New Source를 위해 관련 설정 및
소스분석을 위한 Index를 생성을 한다.


현재 Linux Build Server와 같이 구성할 것이므로, 아래의 참조내용을 이해하고 사용하자.
  • 빌드서버와 Eclipse 기본환경구성이해 
  https://ahyuo79.blogspot.com/2016/02/eclipse.html
  • Eclipse CDT 설치 및 확장 
  https://ahyuo79.blogspot.com/2016/02/eclipse-neon-cc-cdt.html
  • Window에 Linux Tool 설치 
  https://ahyuo79.blogspot.com/2016/02/eclipse-neon-cc-cygwin.html

상위구성이 되었다면, Build Server와 Window와 연결 Interface를 Network Driver를 만들어주어 쉽게 접근하도록 하자.

  https://help.eclipse.org/luna/index.jsp?topic=%2Forg.eclipse.ptp.rdt.doc.user%2Fhtml%2Fgettingstarted%2Fcreating_a_remote_project.html


  • Project Explorer 창설정
  1. Window->Show View->Other  선택 
  2. General->Project Explorer  설정



1.1 Project 기본생성 및 제거 

  • 프로젝트 생성 및 C/C++ Indexer 생성
기존 Linux Code를 찾아 이곳에 등록을 하고 Project를 새로 생성을 하자 
  1. File->New->Project 
  2. Makefile Project with Existing Code 선택
  3. None or Cross GCC 선택 






생성과 동시에 우측 하단에 Refreshing Working Space라고 하며 진행이 되며 보통 Index도 함께 생성이 된다.

  • 프로젝트 제거 
만약 제거하고 싶다면 아래와 같이 생성된 Project에서 Delete를 하면 제거가 가능하다



2. Eclipse의 설정  

Eclipse의 설정들은 아래와 같이 구성이 되며, Project Properties의 경우는 세부 설정이며 Project 마다 변경이 될 수 있다.
하지만 Window->Preference의 경우는 전체 설정이라고 생각하면 될 것이다.

  1. Window->Preferences
  2. Project의 Properties


2.1 Project의 Properties

이제 생성된 Project의 세부설정을 변경하고 싶다면 아래와 같이 둘 중 하나만 하면된다.
  1. Project->Properties 선택 
  2. Project Explorer 창에서 Project 선택 후 우측 클릭 Properties 선택 
만약 활성화가 되지 않았다면, 왼쪽 Project Explorer에서 Project를 선택을 하면 활성화가 된다.

  • Resource  확인사항 
각 파일의 Encoding을 변경가능하며 한글에 민감한 부분이므로 주의해서 사용하자
UTF-8 / MS949
MS949가 없다면 Window->Preferences의 General 의 Workspace 부분을 한번살펴보자
다른부분은 한번 살펴보자


3. 원격 Build 설정 (Project Target) 설정

Window의 Eclipse에서 SSH를 통하여 Linux Build Server에서 Source를 Build를 하기위해서 다음과 같은 설정필요
  1. cygwin의 openssh 설치필요 
  2. cygwin의 ssh 설정 필요 ( SSH 암호 없이 로그인이 가능하도록 설정)


  • Window에 Linux Tool (Cygwin의 SSH기능 설치) 
  https://ahyuo79.blogspot.com/2016/02/eclipse-neon-cc-cygwin.html


3.1 Make Target 생성 

SSH 원격빌드를 하기 위해서 Make Target를 생성한다.

Window->Show View->Other 에서 Make Target 선택 
or 
아래 그림과 같이 Project Explorer 에서 Make Target 선택->Create or Build



상위에서 Make Target->Create or Build 선택



Make Targets->Add or Edit 선택 후  Modify Make Target 창 설정


  • Modify Make Target 창 설정  (상위 좌측의 그림설정)

  1. Target Name:  이클립스에서 보기위한 Target Name (e.g uboot)
  2. Make Target: 실제 Makefile의 Target Name (Window의 Makefile을 아니므로, 사용안함)
  3. Build Command:  SSH를 이용하여 원격빌드를 설정  (아래 참조)


 ssh jhlee@192.168.1.100 'source ~/am335x/setAM335x; make -C ~/am335x/ti-processor-sdk-linux-am335x-evm-03.00.00.04 u-boot' 

Build Setting : 현재 Stop on first build error만 설정했지만 (원격이므로 설정의미가 없음)



  • Make Target 창 -> Build  (원격빌드)
상위와 같이 설정 후  상위 그림의 Make Target 의 아래 Build를 눌러 cygwin의 ssh를 이용하여 Build를 적용하면 Console에서 확인가능

Make Target을 이용하여 Eclipse에서 Console로 쉽게 빌드 확인 (SSH 원격빌드)


에러시 한글문제 깨지는 문제발생 (UTF8로 설정하는 방법없음)



  https://m.blog.naver.com/PostView.nhn?blogId=ccm&logNo=60185667224&proxyReferer=https%3A%2F%2Fwww.google.co.kr%2F


  • Eclipse Console 관련설정 

  https://help.eclipse.org/mars/index.jsp?topic=%2Forg.eclipse.cdt.doc.user%2Ftasks%2Fcdt_t_cbuild_pref.htm


3.2 Build Server의 설정 및 Shell Script 

Window에서 SSH Server로 접속하여 Build를 한번에 해야 하기 때문에 기존에 있는 Makefile or Shell script를 이용하여 쉽게 동작하도록 작성하자.

아래의 예는 간단히 설정파일과 Makefile관련부분을 정리

$ cat ~/am335x/setAM335x 
export ARCH=armv7-a
export TI_SDK_PATH=/home/jhlee/am335x/ti-processor-sdk-linux-am335x-evm-03.00.00.05
export LINUX_DEVKIT_PATH=${TI_SDK_PATH}/linux-devkit
export CROSS_COMPILE=${LINUX_DEVKIT_PATH}/sysroots/x86_64-arago-linux/usr/bin/arm-linux-gnueabihf-

$ cd ~/am335x/ti-processor-sdk-linux-am335x-evm-03.00.00.04
$ vi Makefile 
linux: linux-dtbs
        @echo =================================
        @echo     Building the Linux Kernel
        @echo =================================
        $(MAKE) -C $(LINUXKERNEL_INSTALL_DIR) ARCH=arm CROSS_COMPILE=$(CROSS_COMPILE) $(DEFCONFIG)
        $(MAKE) -j $(MAKE_JOBS) -C $(LINUXKERNEL_INSTALL_DIR) ARCH=arm CROSS_COMPILE=$(CROSS_COMPILE) zImage
        $(MAKE) -j $(MAKE_JOBS) -C $(LINUXKERNEL_INSTALL_DIR) ARCH=arm CROSS_COMPILE=$(CROSS_COMPILE) modules
......
u-boot: linux-dtbs
        @echo ===================================
        @echo    Building U-boot
        @echo ===================================
        $(MAKE) -j $(MAKE_JOBS) -C $(TI_SDK_PATH)/board-support/u-boot-* CROSS_COMPILE=$(CROSS_COMPILE) $(UBOOT_MACHINE)
        $(MAKE) -j $(MAKE_JOBS) -C $(TI_SDK_PATH)/board-support/u-boot-* CROSS_COMPILE=$(CROSS_COMPILE) DTC=$(LINUXKERNEL_INSTALL_DIR)/scripts/dtc/dtc


4. Eciplse Neon의 편이성 설정  

아래기능을 이용하여 창 분할 기능 및 Remote System 및 편의기능 설정
  1. Window->Editor->Toggle Split Editor  ( 화면분할)
  2. Window->Show View->Remote System
  3. Window->Preference  ( 기타 모든 설정)

  • VI관련 기능 
Linux에서는 편집기를 VI or emacs를 사용해야하지만, Eclipse에서 이를 편하게 하기위해서는 vrapper 설치하면 된다고 하지만 유용성은 그다지 인것 같다.
이것을 사용하는 목적은 순전히 ctags 기능때문이지만 이용할수 없다고 하니 별다른 도움이 되지 않을 것 같다.
  1. Help->Install New Software 
  2. http://vrapper.sourceforge.net/update-site/stable/
참고사이트
  http://zoningout.tistory.com/entry/eclipse%EC%97%90%EC%84%9C-vi-mode%EC%82%AC%EC%9A%A9%ED%95%98%EA%B8%B0-1


4.1 Remote System 이용

Eclipse에서 Build Server의 부분을 이용하는 것을 말하며 Remote System에서는 기본적으로 SSH Client가 제공이 된다.
  1. SSH Client  기능 
  2. SFTP Client 기능  (윈도우 탐색기 처럼 사용가능하나 불편함 )
  3. Local Files->Drivers 이용 (Samba로 Window에서 Network Driver로 연결)

위의 3가지 기능을 사용하면, Virtualbox의 Server와 편하게 SSH를 접속할 수 있을 뿐만 아니라,
SFTP를 이용하여 윈도우의 탐색기 기능처럼 사용이 가능하지만 기능이 제한적이다.
그래서, 가급적이면 SFTP하려고 한다.
참으로 좋은 개발 Tool이며 편한 것 같다.

현재 XShell을 사용을 하고 있지만, Eclipse도 꽤 괜찮은 것 같다고 생각이 들지만, XShell 보다 좀 불편해서 그냥 Xshell을 별도 사용중이다.

XShell 역시 위 두 기능을 제공하고 있다. (SSH 와 SFTP 기능 )
  • Remote System 설정방법
 SSH와 SFTP 설정은 다음과 같이 진행을 하면된다. 그림은 아래를 참고하면된다.
  1. Window->Perspective->Open Perspective-> Others -> Remote Systems Explorer 선택  
  2. 생성된 Remote System의 좌측의 맨위 아이콘 (Define a connection to remote system) or 마우스 우측 클릭 후, new->connection를 선택 
  3.  SSH Only 선택 후 본인의 SSH Server 관련 설정 

  • Remote System에서 new->connection 선택 ( 상위 1번동일 )



  • SSH Only 설정 및 관련 설정 (상위 2번 동일)


  • SSH를 설정하면, 자동으로 SFTP도 설정이 됨 (상위 3번 동일)



    vi 편집기를 이용하는데, ssh를 이용하여 편하게 eclipse에서 편집이 가능하다.
    다만 설정을 UTF-8로 변경을 해줘야 한다.

  • SSH에서 한글깨짐문제 
  1. Window>Preferences 선택 
  2. General>Workspace  선택 
  3. 아래메뉴의 OTHER를 선택하고 UTF-8과 UNIX 설정 



출처:
  http://forum.falinux.com/zbxe/index.php?document_srl=791415&mid=lecture_tip