En Ubuntu Linux ya tenemos GCC 4.2 para programar en C++ pero hay ocasiones en que queremos asegurarnos que nuestro codigo compila tanto en Linux como en Windows. Sin embargo lamentablemente Wine aun no puede ejecutar Microsoft Visual C++ 2005.
Sin embargo, un amigo hizo un truco para poder ejecutar solo el compilador y el enlazador del Visual C++ 2005 bajo Wine y con excelentes resultados, es posible compilar y crear ejecutables desde Linux usando el compilador del Visual C++ 2005.
Su reporte esta aqui:
WineHQ – Visual C++ 8.0 (2005)
Primero lo que necesitamos tener es una instalacion valida de Microsoft Visual C++ 2005 en algun Windows. Necesitaras copiar a tu directorio de Wine los siguientes directorios
- c:/Program Files/Microsoft Visual Studio 8/VC/include
- c:/Program Files/Microsoft Visual Studio 8/VC/lib
- c:/Program Files/Microsoft Visual Studio 8/VC/bin
- c:/Program Files/Microsoft Visual Studio 8/Platform SDK/Include
- c:/Program Files/Microsoft Visual Studio 8/Platform SDK/Lib
PASO 0: Verifica que tienes instalado wine
$ sudo apt-get install wine
$ winecfg —-> Elige como version Windows XP y acepta
PASO 1: Primero crea las carpetas de destino dentro de tu instalacion de Wine:
mkdir -p $HOME/.wine/drive_c/Program\ Files/Microsoft\ Visual\ Studio\ 8/VC mkdir -p $HOME/.wine/drive_c/Program\ Files/Microsoft\ Platform\ SDK\ for\ Windows\ Server\ 2003\ R2/
Debes haber instalado antes Wine y haberlo ejecutado una vez al menos.
PASO 2: Ahora, necesitaras las librerias para ejecutar Visual C++ 2005. Eso lo arreglamos usando Winetricks (ES UN SCRIPT PARA RECUPERAR DLLs de Windows):
$ wget http://www.kegel.com/wine/winetricks
Le damos permisos de ejecucion:
$ chmod +x ./winetricks
Y si quisieramos ya instalar una determinada libreria, podriamos hacerlo directamente. Por ejemplo:
$ sh winetricks corefonts vcrun6 vcrun2005sp1
PASO 3: Listo, ahora copia el archivo (de la otra maquina o de la particion de Windows):
C:\Program Files\Microsoft Visual Studio 8\CommoN7\IDE\mspdb80.dll —-> a esta carpeta —–> $HOME/.wine/drive_c/windows/system32
PASO 4: Copia las carpetas bin, lib e include que estan dentro de:
c:/Program Files/Microsoft Visual Studio 8/VC/ —–> a esta carpeta ———–>
$HOME/.wine/drive_c/Program\ Files/Microsoft\ Visual\ Studio\ 8/VC
PASO 5: Copia las carpetas Include y Lib que estan dentro de:
c:/Program Files/Microsoft Visual Studio 8/Platform SDK/ ——> a esta carpeta ———–>
$HOME/.wine/drive_c/Program\ Files/Microsoft\ Platform\ SDK\ for\ Windows\ Server\ 2003\ R2/
PASO 6: Marca como ejecutables el compilador y el enlazador de Visual C++ 2005:
chmod +x “/home/[tu nombre de usuario]/.wine/drive_c/Program Files/Microsoft Visual Studio 8/VC/bin/link.exe”
chmod +x “/home/[tu nombre de usuario]/.wine/drive_c/Program Files/Microsoft Visual Studio 8/VC/bin/cl.exe”
PASO 7: Anhade variables necesarias de entorno para Visual C++:
En mi caso anhadi estas lineas a mi .bashrc (tienes que ponerlas cerca de las lineas donde esta definidos PATH, IMPORTANTE: no es anhadirlas al final).
gedit ~/.bashrc y copia y pega esto:
#This is for Visual C++ 2005
export MSVC=”c:/Program Files/Microsoft Visual Studio 8/VC/”
export MSSDK=”c:/Program Files/Microsoft Platform SDK for Windows Server 2003 R2/”
export INCLUDE=”c:/Program Files/Microsoft Visual Studio 8/VC/include:c:/Program Files/Microsoft\Platform SDK for Windows Server 2003 R2/Include”
export PATH=$PATH:”/home/[tu usuario]/.wine/drive_c/Program Files/Microsoft Visual Studio 8/VC/bin”
export LIB=”c:/Program Files/Microsoft Visual Studio 8/VC/lib” #:c:/Program Files/Microsoft Platform SDK for Windows Server 2003 R2/Lib”
alias clc=’cl.exe /c /I”c:/Program Files/Microsoft Visual Studio 8/VC/include” /I”c:/Program Files/Microsoft\Platform SDK for Windows Server 2003 R2/Include” /EHsc ‘
alias cll=’cl.exe /I”c:/Program Files/Microsoft Visual Studio 8/VC/include” /I”c:/Program Files/Microsoft\Platform SDK for Windows Server 2003 R2/Include” /EHsc ‘
Listo graba y sale. Cierra la consola y iniciala de nuevo.
Listo, ahora cuando quieras compilar un programa tipeas
$ cll myprograma.cpp /omyprograma.exe
Espero que les sea muy util.
Y aqui tienen el resultado de un programa compilando en Ubuntu Hardy

Compilando un programa con Visual C++ 2005 en Ubuntu Linux
Y podemos ejecutar el programa directamente de la linea de comandos con: $wine miprograma.exe
La salida por ejemplo se ve aqui:

Ejecutando el programa con Wine y compilado con Visual C++ 2005
Si les interesa saber mas de las opciones de linea de cl.exe (el compilador) y link.exe (el enlazador) del Visual C++ 2005, aqui les dejo una tabla:
Para cl.exe:
/Od
/D "WIN32"
/D "_DEBUG"
/D "_WINDOWS"
/D "_USE_MATH_DEFINES"
/D "_CRT_SECURE_NO_DEPRECATE"
/FD
/MT
/Fo"Debug\\"
/Fd"Debug\vc80.pdb"
/W2 /nologo
/c
/TP
/errorReport:prompt
Para link.exe:
/VERBOSE
/OUT:"Debug\pipmak .exe"
/INCREMENTAL
/NOLOGO
/LIBPATH:"D:\Projects\Lib"
/LIBPATH:"D:\Projects\Microsoft Platform SDK\Lib"
/MANIFEST
/MANIFESTFILE:"Debug\pipmak .exe.intermediate.manifest"
/NODEFAULTLIB
/DEBUG
/ASSEMBLYDEBUG
/PDB:"d:\Projects\pipmak-SVN\Debug\pipmak .pdb"
/SUBSYSTEM:WINDOWS
/MACHINE:X86
/ERRORREPORT:PROMPT
vorbisfile_static_d.lib vorbis_static_d.lib ogg_static_d.lib zlib.lib
physfs.lib opengl32.lib glu32.lib OpenAL32.lib
SDL_ttf.lib SDL.lib SDLmain.lib SDL_image.lib
oldnames.lib msvcrtd.lib libcmtd.lib lua50.lib
kernel32.lib user32.lib gdi32.lib winspool.lib
comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib
Espero que les sea util