[QT/Win32] Qt Win32 opensource 4.3.2 + Eclipse IDE for C/C++ Developers 개발환경 설정

Posted by 빵빵빵
2012/07/06 17:54 전산(컴퓨터)/Qt



출처 : http://www.korone.net/bbs/board.php?bo_table=qt_lecture&wr_id=397&page=3

1. 개요
Qt로 윈도우에서 개발하기 위해서는 상용버전의 Qt를 사면 Visual Studio와 연동되는 Qt를 얻을 수 있지만, opensource버전을 이용해서 IDE에서 할 수 있는 방법을 찾아보던중
eclipse와 연동되는 것을 해보았습니다.

2. Eclipse IDE for C/C++ Developers 설치
2.1 JRE설치
eclipse는 java로 만들어 졌기때문에 eclipse를 실행하려면 java runtime이 필요합니다.
다음의 URL에서 다운로드 가능합니다.

2.2 eclipse 설치
먼저 eclipse 공식홈페이지에 가서 Eclipse IDE for C/C++ Developers를 다운로드 받은다음 압축을 해제합니다.
별도의 설치과정이 없기때문에, 압축해제한 파일을 적당한 디렉토리로 이동시켜놓으면 끝입니다.
저의경우에는 c:\Eclipse 디렉토리로 이동시켜 두었습니다.

2.3 Eclipse CDT plug-in 설치
eclipse에서 c/c++개발환경을 위해서는 CDT plugin이 필요합니다.
다음의 위치에서 다운로드를 받아서 압축을 해제하면 plugins, features디렉토리가 생성되는데, 이 두 디렉토리내의 파일을 eclipse의 plugins, features디렉토리로 복사를 합니다.

2.4 mingw설치
Eclipse는 기본적으로 c/c++컴파일러가 없기때문에 mingw의 c/c++컴파일러를 설치합니다.
다음의 URL에 가서 mingw를 받은다음 MinGW-5.1.3.exe를 실행합니다.
여기에서 gcc, g++을 선택하여 설치를 합니다.

설치가 모두 마친다음 eclipse에서 mingw의 컴파일러를 참조하기 위한 PATH를 걸어줍니다.
윈도우 환경변수 PATH에 c:\mingw\bin을 설정합니다.

또한, eclipse에서는 컴파일을 할때 make.exe를 참조하게 되어 있는데, c:\mingw\bin에는 make.exe라는 이름대신에 mingw32-make.exe만 존재합니다.
eclipse환경설정에서 make.exe대신에 mingw32-make.exe로 변경해 주면 되지만
그냥 간편하게 mingw32-make.exe파일을 make.exe라는 이름으로 하나 더 복사합니다.

2.5 이제 eclipse를 실행해서 new project로 c++ application을 하나 만든다음
컴파일 (Ctrl + B) 하고 실행 (Ctrl + F11)을 해봅니다.
아래에 console에 hello, world가 찍히면 성공입니다.
만약 컴파일 에러가 난다면 위의 2.4부분의 환경변수를 확인해 보세요.

3. Qt 설치
3.1 Qt 다운로드
Qt소스는 trolltech홈페이지에서 다운로드 받으실 수 있습니다.

다운로드 받은파일을 적당한 디렉토리에 압축을 해제합니다.
그리고 나서 적당한 이름으로 변경해줍니다. 저의 경우에는 c:\Qt\4.3.2 라는 디렉토리로 위치와 이름을 수정했습니다.(상용버전을 설치하면 이렇게 되거든요)

3.2 Qt 컴파일
Qt를 컴파일 하기 위해 먼저 윈도우 환경변수 PATH에 Qt위치\bin 디렉토리를 설정합니다.
저의 경우 PATH에 c:\Qt\4.3.2\bin이라는 형식으로 추가하였습니다.

이제 시작 -> 실행 -> cmd를 실행해서 dos command창에서 c:\Qt\4.3.2 디렉토리로 이동합니다.
Qt를 Visual Studio .NET 2003컴파일러를 이용해서 컴파일 하기 위해서
"C:\Program Files\Microsoft Visual Studio .NET 2003\Vc7\bin\vcvars32.bat"를 실행합니다.(이때 반드시 "를 붙여야 합니다. 안 그러면 제대로 명령이 안먹습니다.)
C:\Qt\4.3.2>"C:\Program Files\Microsoft Visual Studio .NET 2003\Common7\Tools\vs
vars32.bat"
Setting environment for using Microsoft Visual Studio .NET 2003 tools.
(If you have another version of Visual Studio or Visual C++ installed and wish
to use its tools from the command line, run vcvars32.bat for that version.)

위와같이 나오면 제대로 실행된것입니다.
이제 configure설정을 합니다.
C:\Qt\4.3.2>configure -platform win32-msvc.net

이것은 qt의 프로젝트파일인 .pro를 생성하기 위한것인데, 조금 오래걸립니다.

위 작업을 모두 마치면 이제 아래와같이 컴파일을 합니다.
C:\Qt\4.3.2>nmake

이것은 엄청나게 오래걸립니다.
컴파일이 완료되면 모두 끝납니다.

3.3 Qt eclipse integration설치
eclipse에서 Qt용 프로젝트 생성 이나 Qt디자인등을 하기 위해서는 trolltech에서 제공하는
Qt Eclipse Integration을 설치하면 됩니다.
다음의 URL에서 다운로드 하면 됩니다.

4. Eclipse 실행
위과정까지 모두 마찬후에 eclipse를 실행하면 Qt를 Visual Studio .NET 2003컴파일러로
컴파일 했기때문에 제대로 컴파일이 안됩니다.
이것은 환경변수가 설정이 안되어 있어서 그런것인데,
설정해 주어야 할 것이 너무 많고해서 저의 경우 다음과 같이 설정을 하였습니다.

먼저 C:\Program Files\Microsoft Visual Studio .NET 2003\Common7\Tools\vsvars32.bat파일을 eclipse디렉토리로 복사해서 vsvars32.bat의 아래부분에 eclipse를 실행하는 코드를 넣고 vsvars32.bat를 eclipse_msvc.bat로 변경한다음에 eclipse_msvc.bat로 항상 실행한다.

vsvars32.bat 수정사항
@set LIB=%MSVCDir%\ATLMFC\LIB;%MSVCDir%\LIB;%MSVCDir%\PlatformSDK\lib\prerelease;%MSVCDir%\PlatformSDK\lib;%FrameworkSDKDir%\lib;%LIB%

eclipse <--- 이 부분을 추가함

@goto end

:Usage

이제 모두 완료되었습니다.


korone
http://www.korone.net
2012/07/06 17:54 2012/07/06 17:54

Tags

웹에서 C/C++ 컴파일해서 결과까지 보자

Posted by 빵빵빵
2012/05/25 10:39 전산(컴퓨터)



쬐끔 후진 사이트

http://codepad.org/

가입이 필요없고, 컴팔후 바로 수정해서 다시해볼 수 있지만...
컴팔 에러 메시지가 제대로 나와서 어디가 문젠지 알기가 쉽지 않다.
해더파일 인클루드를 별로 신경쓰지 않아도 잘 컴파일 된다.



좀더 리얼한 사이트

http://ideone.com/

지원하는 언어도 다양하고,
일단 한번 컴팔하고 실행해보는데는 가입이 필요없고, 수정해서 다시 해볼때는 가입이 필요한거 같다.
컴팔 에러 메시지가 제대로 나오고 나름 쓸만하다.
해더파일 인클루드를 잘 맞춰줘야 한다.




추가로... 자바스크립으로 구현한 리눅스 쉘...에서 C 컴파일

http://bellard.org/jslinux/

역시 가입은 필요가 없다.
tcc (C 컴파일러) 도 돌아가는 수준 까지 많든거 같다. vi도 도는듯....
위에꺼보다 좀더 리얼하긴 하지만... 느!리!다!
간단한 쉴 명령어들도 다 돈다....
실제 서버가 아니고 자바 스크립으로 도는 거라....
장점이라하면.... 농협을 순식간에 날려버린 rm -rf를 맘대로 날려도.... F5로 되살아난다.... ^^
하지만 실제 터미널에 접속했을때와 혼돈해서 터미널에서 날리면...
퇴근은 물건너가거나 영원히 퇴근하게 될지도 모른다... ㅋㅋ
무려 부팅화면까지 보인다.... 아래 보이죠???

2012/05/25 10:39 2012/05/25 10:39

리눅스에서 ssh로 원격 파일 시스템을 마운트해보자

Posted by 빵빵빵
2012/05/25 01:11 전산(컴퓨터)/리눅스



일단 리눅스에서 아래와 같은 패키지를 다운 받아 설치합니다.
걍 쉘에서 아래와 같이 치면 됩니다.

------------------------------------------------------------------------------------
master@heart4u:~$ apt-get install sshfs fuse-utils
E: 잠금 파일 /var/lib/dpkg/lock 파일을 열 수 없습니다 - open (13: Permission denied)
E: Unable to lock the administration directory (/var/lib/dpkg/), are you root?
------------------------------------------------------------------------------------
물론!!! 루트로요... 루트가 아니라면...


요렇게... 하지만 이것도 권한이 있어야 한다는거.....
안되면 root에게 부탁하세요.

------------------------------------------------------------------------------------
master@heart4u:~$ sudo apt-get install sshfs fuse-utils
패키지 목록을 읽는 중입니다... 완료
의존성 트리를 만드는 중입니다
상태 정보를 읽는 중입니다... 완료
다음 새 패키지가 전에 자동으로 설치되었지만 더 이상 필요하지 않습니다:
  diff
이들을 지우기 위해서는 'apt-get autoremove'를 사용하십시오.
다음 패키지를 더 설치할 것입니다:
  libfuse2 mount
제안하는 패키지:
  nfs-common
다음 새 패키지를 설치할 것입니다:
  sshfs
다음 패키지를 업그레이드할 것입니다:
  fuse-utils libfuse2 mount
3개 업그레이드, 1개 새로 설치, 0개 지우기 및 198개 업그레이드 안 함.
379k바이트 아카이브를 받아야 합니다.
이 작업 후 147k바이트의 디스크 공간을 더 사용하게 됩니다.
계속 하시겠습니까 [Y/n]? y
받기:1 http://kr.archive.ubuntu.com/ubuntu/ lucid-updates/main mount 2.17.2-0ubuntu1.10.04.2 [175kB]
받기:2 http://kr.archive.ubuntu.com/ubuntu/ lucid-updates/main fuse-utils 2.8.1-1.1ubuntu3.1 [22.0kB]
받기:3 http://kr.archive.ubuntu.com/ubuntu/ lucid-updates/main libfuse2 2.8.1-1.1ubuntu3.1 [141kB]
받기:4 http://kr.archive.ubuntu.com/ubuntu/ lucid/main sshfs 2.2-1build1 [40.8kB]
내려받기 379k바이트, 소요시간 2s (166k바이트/초)
(데이터베이스 읽는중 ...현재 74042개의 파일과 디렉토리가 설치되어 있습니다.)
mount 2.17.2-0ubuntu1 패키지를 대체할 준비하는 중입니다 (.../mount_2.17.2-0ubuntu1.10.04.2_i386.deb 사용) ...
대체되는 mount 패키지를 푸는 중입니다 ...
man-db에 대한 트리거를 처리하는 중입니다 ...
mount (2.17.2-0ubuntu1.10.04.2) 설정하는 중입니다 ...

(데이터베이스 읽는중 ...현재 74042개의 파일과 디렉토리가 설치되어 있습니다.)
fuse-utils 2.8.1-1.1ubuntu2 패키지를 대체할 준비하는 중입니다 (.../fuse-utils_2.8.1-1.1ubuntu3.1_i386.deb 사용) ...
대체되는 fuse-utils 패키지를 푸는 중입니다 ...
libfuse2 2.8.1-1.1ubuntu2 패키지를 대체할 준비하는 중입니다 (.../libfuse2_2.8.1-1.1ubuntu3.1_i386.deb 사용) ...
대체되는 libfuse2 패키지를 푸는 중입니다 ...
전에 선택하지 않은 sshfs 패키지를 선택합니다.
sshfs 패키지를 푸는 중입니다 (.../sshfs_2.2-1build1_i386.deb에서) ...
man-db에 대한 트리거를 처리하는 중입니다 ...
libfuse2 (2.8.1-1.1ubuntu3.1) 설정하는 중입니다 ...

fuse-utils (2.8.1-1.1ubuntu3.1) 설정하는 중입니다 ...
udev active, skipping device node creation.
update-initramfs: deferring update (trigger activated)

sshfs (2.2-1build1) 설정하는 중입니다 ...
libc-bin에 대한 트리거를 처리하는 중입니다 ...
ldconfig deferred processing now taking place
initramfs-tools에 대한 트리거를 처리하는 중입니다 ...
update-initramfs: Generating /boot/initrd.img-2.6.32-25-generic-pae
------------------------------------------------------------------------------------


요렇게 줄줄줄줄 다 설치가 됩니다.

그러면 도움말을 함 볼까요?

------------------------------------------------------------------------------------
master@heart4u:~$ sshfs -h
usage: sshfs [user@]host:[dir] mountpoint [options]

general options:
    -o opt,[opt...]        mount options
    -h   --help            print help
    -V   --version         print version

SSHFS options:
    -p PORT                equivalent to '-o port=PORT'
    -C                     equivalent to '-o compression=yes'
    -F ssh_configfile      specifies alternative ssh configuration file
    -1                     equivalent to '-o ssh_protocol=1'
    -o reconnect           reconnect to server
    -o sshfs_sync          synchronous writes
    -o no_readahead        synchronous reads (no speculative readahead)
    -o sshfs_debug         print some debugging information
    -o cache=YESNO         enable caching {yes,no} (default: yes)
    -o cache_timeout=N     sets timeout for caches in seconds (default: 20)
    -o cache_X_timeout=N   sets timeout for {stat,dir,link} cache
    -o workaround=LIST     colon separated list of workarounds
             none             no workarounds enabled
             all              all workarounds enabled
             [no]rename       fix renaming to existing file (default: off)
             [no]nodelaysrv   set nodelay tcp flag in sshd (default: off)
             [no]truncate     fix truncate for old servers (default: off)
             [no]buflimit     fix buffer fillup bug in server (default: on)
    -o idmap=TYPE          user/group ID mapping, possible types are:
             none             no translation of the ID space (default)
             user             only translate UID of connecting user
    -o ssh_command=CMD     execute CMD instead of 'ssh'
    -o ssh_protocol=N      ssh protocol to use (default: 2)
    -o sftp_server=SERV    path to sftp server or subsystem (default: sftp)
    -o directport=PORT     directly connect to PORT bypassing ssh
    -o transform_symlinks  transform absolute symlinks to relative
    -o follow_symlinks     follow symlinks on the server
    -o no_check_root       don't check for existence of 'dir' on server
    -o password_stdin      read password from stdin (only for pam_mount!)
    -o SSHOPT=VAL          ssh options (see man ssh_config)

FUSE options:
    -d   -o debug          enable debug output (implies -f)
    -f                     foreground operation
    -s                     disable multi-threaded operation

    -o allow_other         allow access to other users
    -o allow_root          allow access to root
    -o nonempty            allow mounts over non-empty file/dir
    -o default_permissions enable permission checking by kernel
    -o fsname=NAME         set filesystem name
    -o subtype=NAME        set filesystem type
    -o large_read          issue large read requests (2.4 only)
    -o max_read=N          set maximum size of read requests

    -o hard_remove         immediate removal (don't hide files)
    -o use_ino             let filesystem set inode numbers
    -o readdir_ino         try to fill in d_ino in readdir
    -o direct_io           use direct I/O
    -o kernel_cache        cache files in kernel
    -o [no]auto_cache      enable caching based on modification times (off)
    -o umask=M             set file permissions (octal)
    -o uid=N               set file owner
    -o gid=N               set file group
    -o entry_timeout=T     cache timeout for names (1.0s)
    -o negative_timeout=T  cache timeout for deleted names (0.0s)
    -o attr_timeout=T      cache timeout for attributes (1.0s)
    -o ac_attr_timeout=T   auto cache timeout for attributes (attr_timeout)
    -o intr                allow requests to be interrupted
    -o intr_signal=NUM     signal to send on interrupt (10)
    -o modules=M1[:M2...]  names of modules to push onto filesystem stack

    -o max_write=N         set maximum size of write requests
    -o max_readahead=N     set maximum readahead
    -o async_read          perform reads asynchronously (default)
    -o sync_read           perform reads synchronously
    -o atomic_o_trunc      enable atomic open+truncate support
    -o big_writes          enable larger than 4kB writes
    -o no_remote_lock      disable remote file locking

Module options:

[subdir]
    -o subdir=DIR           prepend this directory to all paths (mandatory)
    -o [no]rellinks         transform absolute symlinks to relative

[iconv]
    -o from_code=CHARSET   original encoding of file names (default: UTF-8)
    -o to_code=CHARSET      new encoding of the file names (default: UTF-8)
------------------------------------------------------------------------------------
아... 모르겠다... ㅡㅡ;;;;

usage: sshfs [user@]host:[dir] mountpoint [options]

맨 위에 휘리릭 올라가 버려서 허탈한거... 저거만 중요한거네요... ㅋ


됫꼬!!! 마운트 해봅시다.

마운트할 디렉토리를 하나 만들고요 mkdir mntssh

마운트를 시도합니다. sshfs myaccount@sshserver.co.kr: ./mntssh
요기서 도메인 뒤에 반드시 : 를 붙여줘야 합니다.

계속할꺼냐고 물어보면 yes 라고 다 쳐주시고

계정의 비밀번호를 넣습니다.

그런 다음에 마운트 포인트된 디렉토리를 ls 로 뒤져봅니다.

정상적으로 마운트 되면 파일 내용이 보일꺼에요~~~


------------------------------------------------------------------------------------
master@heart4u:~$ mkdir mntssh
master@heart4u:~$ sshfs myaccount@sshserver.co.kr: ./mntssh
The authenticity of host 'sshserver.co.kr (211.xxx.xxx.44)' can't be established.
RSA key fingerprint is XX:XX:XX:XX:XX:YY:YY:YY:YY:YY:ZZ:ZZ:ZZ:ZZ:ZZ:ZZ
Are you sure you want to continue connecting (yes/no)? yes

myaccount@sshserver.co.kr's password:
master@heart4u:~$ ls mntssh
public_html
master@heart4u:~$
------------------------------------------------------------------------------------


끗!!!


끗!! 내기 전에 이거까지...

끝내기 전에 ... ㅡㅡ;;;;;


------------------------------------------------------------------------------------
master@heart4u:~$ fusermount -u mntssh
master@heart4u:~$ ls mntssh
master@heart4u:~$
------------------------------------------------------------------------------------


마운트를 했으면 해제도 해야죠???? 이거 모르면 해멤니다..... ㅋ

2012/05/25 01:11 2012/05/25 01:11