<완료>cygwin에서 cl.exe로 컴파일 하고 싶습니다.

jhlee0324의 이미지

사정이 생겨서 cygwin에서 cl로 컴파일을 해야하는데,

어떻게 해야 합니까?

첨부터 어떻게 해야할지 막막하네요.

cl.exe를 bin폴더에 넣고 cl을 치니깐.. 아무런 반응이 없네요.

짤막한 소스를(a.c) 만들어서 컴파일 할려고 cl a.c 해도 도저히 안됩니다.

컴파일 하는 법 좀 가르쳐 주세요.

답변 기다리고 있겠습니다.

!!<완료> 리플을 읽어주세요!!

semmal의 이미지

cl.exe이 visual c++ 컴파일러인 것으로 기억하는데, 굳이 vc++를 놔두고 cygwin으로 해야할 이유가 무엇인가요?

만약 내부적인 구현을 cygwin에 구현된 라이브러리로 하고 cl로 컴파일하려면 당연히 안될겁니다. 라이브러리가 다르니까요. 그 반대의 경우도 마찬가지구요.

그저 컴파일만 할 목적이라면 cygwin을 쓸 필요는 없을것 같습니다만, 만약 쉘스크립트 등을 활용하는 문제라면 그냥 적절한 path를 지정하거나, cmd.exe를 쉘 부르듯이 사용해서 VC++에 정의된 배치파일을 사용하면 쉽게 컴파일 가능할 겁니다.

환경이 갖춰지지 않은 관계로 이정도 답변밖에는 못드리겠군요.
------------------------------
How many legs does a dog have?

------------------------------
How many legs does a dog have?

jhlee0324의 이미지

안되는줄 알았는데.

make로 cl컴파일을 돌려서 소스를 주는 바람에....net 2005로 했더군요..

전 2003밖에 없어서 make파일을 수정해야하는데... 일단 cl부터 안먹혀서... 도저히 손을 못 쓰겠네요.

이렇게 돌려서 사용해 본신 분은 없나요?

익명 사용자의 이미지

왜 cygwin에서 cl로 컴파일해야 하나요?

이 문제를 푸는게 더 도움이 될듯한데요.

jhlee0324의 이미지

첨 했던 사람이 cygwin에서 cl로 해서 다시 윈도우로 옮길려고 하니깐.. 파일이 여러개 링크 된것이 많고

make파일 너무 많아서 그걸 다 분석하고 새로운 워크스페이션 만들바야 차라리 cygwin에서 하는 것이 더 빠를거 같아서요.

thyoo의 이미지

커맨드 라인에서 cl.exe를 쓰려면
vcvars32.bat로 환경 변수를 지정해야 합니다.

그런데 디렉토리 이름이 호환이 안되므로
vcvars32.bat을 vc.sh이라는 shell script로 바꿉니다.
제 환경에서는 C 드라이브에 VC8입니다.

#!/bin/bash
export DRIVE_DIR='/cygdrive/c'
#@SET VSINSTALLDIR=C:\Program Files\Microsoft Visual Studio 8
export VSINSTALLDIR="${DRIVE_DIR}/Program Files/Microsoft Visual Studio 8"
#@SET VCINSTALLDIR=C:\Program Files\Microsoft Visual Studio 8\VC
export VCINSTALLDIR="$DRIVE_DIR/Program Files/Microsoft Visual Studio 8/VC"
#@SET FrameworkDir=C:\WINDOWS\Microsoft.NET\Framework
export FrameworkDir=$DRIVE_DIR'/WINDOWS/Microsoft.NET/Framework'
#@SET FrameworkVersion=v2.0.50727
export FrameworkVersion=v2.0.50727
#@SET FrameworkSDKDir=C:\Program Files\Microsoft Visual Studio 8\SDK\v2.0
export FrameworkSDKDir=$DRIVE_DIR'/Program Files/Microsoft Visual Studio 8/SDK/v2.0'
#@if "%VSINSTALLDIR%"=="" goto error_no_VSINSTALLDIR
#@if "%VCINSTALLDIR%"=="" goto error_no_VCINSTALLDIR
 
#@echo Setting environment for using Microsoft Visual Studio 2005 x86 tools.
echo Setting environment for using Microsoft Visual Studio 2005 x86 tools.
 
#@rem
#@rem Root of Visual Studio IDE installed files.
#@rem
#@set DevEnvDir=C:\Program Files\Microsoft Visual Studio 8\Common7\IDE
export DevEnvDir=$DRIVE_DIR'/Program Files/Microsoft Visual Studio 8/Common7/IDE'
 
#@set PATH=C:\Program Files\Microsoft Visual Studio 8\Common7\IDE;C:\Program Files\Microsoft Visual Studio 8\VC\BIN;C:\Program Files\Microsoft Visual Studio 8\Common7\Tools;C:\Program Files\Microsoft Visual Studio 8\Common7\Tools\bin;C:\Program Files\Microsoft Visual Studio 8\VC\PlatformSDK\bin;C:\Program Files\Microsoft Visual Studio 8\SDK\v2.0\bin;C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727;C:\Program Files\Microsoft Visual Studio 8\VC\VCPackages;%PATH%
 
export PATH="$DRIVE_DIR/Program Files/Microsoft Visual Studio 8/Common7/IDE:$DRIVE_DIR/Program Files/Microsoft Visual Studio 8/VC/BIN:$DRIVE_DIR/Program Files/Microsoft Visual Studio 8/Common7/Tools:$DRIVE_DIR/Program Files/Microsoft Visual Studio 8/Common7/Tools/bin:$DRIVE_DIR/Program Files/Microsoft Visual Studio 8/VC/PlatformSDK/bin:$DRIVE_DIR/Program Files/Microsoft Visual Studio 8/SDK/v2.0/bin:$DRIVE_DIR/WINDOWS/Microsoft.NET/Framework/v2.0.50727:$DRIVE_DIR/Program Files/Microsoft Visual Studio 8/VC/VCPackages:$PATH"
 
#@set INCLUDE=C:\Program Files\Microsoft Visual Studio 8\VC\ATLMFC\INCLUDE;C:\Program Files\Microsoft Visual Studio 8\VC\INCLUDE;C:\Program Files\Microsoft Visual Studio 8\VC\PlatformSDK\include;C:\Program Files\Microsoft Visual Studio 8\SDK\v2.0\include;%INCLUDE%
export INCLUDE="C:/usr/src/libiberty/include;$INCLUDE"
export INCLUDE="C:/Program Files/Microsoft Visual Studio 8/VC/ATLMFC/INCLUDE;C:/Program Files/Microsoft Visual Studio 8/VC/INCLUDE;C:/Program Files/Microsoft Visual Studio 8/VC/PlatformSDK/include;C:/Program Files/Microsoft Visual Studio 8/SDK/v2.0/include;$INCLUDE"
 
#@set LIB=C:\Program Files\Microsoft Visual Studio 8\VC\ATLMFC\LIB;C:\Program Files\Microsoft Visual Studio 8\VC\LIB;C:\Program Files\Microsoft Visual Studio 8\VC\PlatformSDK\lib;C:\Program Files\Microsoft Visual Studio 8\SDK\v2.0\lib;%LIB%
export LIB="C:/usr/src/libiberty/libiberty/vc71/Release;$LIB"
export LIB="C:/Program Files/Microsoft Visual Studio 8/VC/ATLMFC/LIB;C:/Program Files/Microsoft Visual Studio 8/VC/LIB;C:/Program Files/Microsoft Visual Studio 8/VC/PlatformSDK/lib;C:/Program Files/Microsoft Visual Studio 8/SDK/v2.0/lib;$LIB"
 
#@set LIBPATH=C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727;C:\Program Files\Microsoft Visual Studio 8\VC\ATLMFC\LIB
export LIBPATH="C:/WINDOWS/Microsoft.NET/Framework/v2.0.50727;C:/Program Files/Microsoft Visual Studio 8/VC/ATLMFC/LIB"
 
#@goto end
#
#:error_no_VSINSTALLDIR
#@echo ERROR: VSINSTALLDIR variable is not set. 
#@goto end
#
#:error_no_VCINSTALLDIR
#@echo ERROR: VCINSTALLDIR variable is not set. 
#@goto end
#
#:end
 
export CC=cl.exe

적당한 실행 패쓰에 넣고
$ source `which vc.sh`
해주시면 됩니다.
___________________________________
Less is More (Robert Browning)

___________________________________
Less is More (Robert Browning)

jhlee0324의 이미지

됩니다.. ^^

완벽하게 되진 않지만, 일단 컴파일은 되네요.. 이제 링크 문제~~~ ^^ 감사합니다.

그런데

저기서 export에 뭔가 잘못되어있는지....

거기서 계속 에러가 나서 export에 있는 부분은 그냥 노가다로 다 적으니깐 되네요~

다시 한번 더 감사합니다.

익명 사용자의 이미지

vc.sh은 전에 libiberty를 포팅하려다가 만들었던 것인데
다시 보니까 잘 못된 부분도 있네요.

vim 가지고 이것 저것 바꾸느라 성가셨는데
채쓰맨님의 해법을 보니까 존경스럽군요.

cmd에서 vcvar32.bat 실행
cd \cygwin\bin
bash -l

하시면 됩니다.

체스맨의 이미지

질문 내용은 아마도, 컴파일러는 vc 컴파일러고, make 유틸은 cygwin 에 있는 것을 사용했다는 얘기 같네요... ( 얼핏 vc 와 cygwin 컴파일러를 링크하는 것인 줄 알았는데 그건 아닌것 같구요. )

(1) 우선 비주얼 스튜디오 설치 디렉토리 vcvars32.bat 을 찾습니다.
(2) 윈도 명령창(cmd.exe)을 실행한 뒤, 위의 vcvars32.bat 을 실행합니다.
cl 이라고 쳐봅니다. link 라고도 쳐 봅니다. 잘 되면 컴파일러를 쓸 수 있게 된겁니다.
(3) cygwin 설치 디렉토리의 bash 를 위에서 실행한 cmd 창에서 실행합니다. 이렇게 하면 vcvars32.bat 이 설정한 환경 변수가 그대로 유지되면서 bash 가 실행됩니다.
(4) cygwin 명령들을 사용해 봅니다.
(5) 위 과정을 하나의 배치파일로 만들고, 필요할 때 그 배치파일을 이용합니다.

참고로 vc 컴파일러를 사용하는데 필요한 주요 환경 변수는
PATH : 명령들이 들어있는 bin 경로를 추가
INCLUDE : 인클루드 경로
LIB : 라이브러리 경로
cl : cl 컴파일러 옵션 설정
link : linker 옵션 설정

처음 세개만 설정하면 vc 컴파일러를 쓸 수 있습니다.

Orion Project : http://orionids.org

jhlee0324의 이미지

방금 적어주신 걸로 해 보았는데...

cl 명령어가 먹히네요..감사합니다... 그런데 다른 명령어가 하나도 되질 않네요...-0-;;

ls 라든지 make라든지... 전혀 되질 않네요.. 이건 어떻게 해야합니까?

체스맨의 이미지

그게 안되는건 cygwin bin 경로가 PATH 에 잡혀 있지 않기 때문입니다.

bash 실행전에
set PATH=%PATH%;cygwin_bin_path
를 추가하세요.

cygwin_bin_path 는 도스 경로로 입력하면 됩니다. bash 실행전에

gcc, make 등이 먹는지 확인하시고, 그 다음 bash 를 실행하세요.

Orion Project : http://orionids.org

jhlee0324의 이미지

와우... 이틀동안 삽질한 부분인데...첨부터 여기에 물어봤다면..하는 생각이 드네요..

감사합니다... ^^

댓글 달기

Filtered HTML

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

BBCode

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param>
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

Textile

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • You can use Textile markup to format text.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Markdown

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • Quick Tips:
    • Two or more spaces at a line's end = Line break
    • Double returns = Paragraph
    • *Single asterisks* or _single underscores_ = Emphasis
    • **Double** or __double__ = Strong
    • This is [a link](http://the.link.example.com "The optional title text")
    For complete details on the Markdown syntax, see the Markdown documentation and Markdown Extra documentation for tables, footnotes, and more.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Plain text

  • HTML 태그를 사용할 수 없습니다.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 줄과 단락은 자동으로 분리됩니다.
댓글 첨부 파일
이 댓글에 이미지나 파일을 업로드 합니다.
파일 크기는 8 MB보다 작아야 합니다.
허용할 파일 형식: txt pdf doc xls gif jpg jpeg mp3 png rar zip.
CAPTCHA
이것은 자동으로 스팸을 올리는 것을 막기 위해서 제공됩니다.