Editing Free Compiler Setup Under Linux
Jump to navigation
Jump to search
Warning: You are not logged in. Your IP address will be publicly visible if you make any edits. If you log in or create an account, your edits will be attributed to your username, along with other benefits.
The edit can be undone. Please check the comparison below to verify that this is what you want to do, and then save the changes below to finish undoing the edit.
Latest revision | Your text | ||
Line 1: | Line 1: | ||
− | This article explains how to setup a free compiler | + | This article explains how to setup a free compiler under Linux, with an assumption that Orbiter itself can be ran under Linux with Wine for testing your modules. Latest possible setup that is capable of doing it is [http://www.winehq.org Wine 1.4] and [http://sourceforge.net/apps/mediawiki/orbitervis/index.php?title=OrbiterPublicBeta Orbiter 111105], using the built-in DX7 graphical client. The steps presented here have been tested on Debian-testing. The concept is based on downloading first and running MS VC executables, wrapped by [http://www.winehq.org Wine], and fed back to a native multiplatform IDE - [http://www.codeblocks.org/ Code::Blocks]. Thanks to [http://wiki.winehq.org/winetricks/ winetricks], it's of course easy to download the VC executables, along with its IDE, and run the whole IDE through Wine, but such a setup is unstable (see for yourself). |
− | The concept is based on downloading and running MS VC | ||
− | + | == Downloading build software and Code::Blocks == | |
− | |||
− | |||
<pre> | <pre> | ||
− | + | sudo aptitude install subversion wine winetricks build-essential libtool automake libhunspell-dev libgamin-dev libwxgtk2.8-dev | |
− | sudo aptitude install subversion wine winetricks build-essential | ||
− | libtool automake libhunspell-dev libgamin-dev | ||
− | |||
− | |||
mkdir -p ~/devel/codeblocks | mkdir -p ~/devel/codeblocks | ||
mkdir -p ~/devel/bin | mkdir -p ~/devel/bin | ||
cd ~/devel/codeblocks | cd ~/devel/codeblocks | ||
− | # Checking out | + | # Checking out revision 8150 which is the latest working version. |
− | svn checkout | + | # Check Nightly Builds page for updated revisions, available here: http://forums.codeblocks.org/index.php/board,20.0.html |
+ | svn checkout -r 8150 http://svn.berlios.de/svnroot/repos/codeblocks/trunk | ||
</pre> | </pre> | ||
− | + | == Hacking Code::Blocks == | |
− | The CB needs to be a bit hacked, to enable MS VC++ under Linux, which normally isn't possible. The hacking is kept to a minimum and additionally allows to use the same CB project file to compile code under Windows, using the same build targets. | + | The CB needs to be a bit hacked, to enable MS VC++ under Linux, which normally isn't possible, because CB requires registry settings to configure the VC++. The registry is not available under Linux. The hacking is kept to a minimum and additionally allows to use the same CB project file to compile code under Windows, using the same build targets. We will do it by sacrificing one of the compilers, that are supported on Linux, in this case the Tiny C Compiler. You can use another one if you wish. |
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
<pre> | <pre> | ||
− | + | cd trunk | |
− | + | gedit src/plugins/compilergcc/compilerMSVC8.cpp src/plugins/compilergcc/compilerTcc.cpp | |
− | |||
− | |||
− | |||
− | |||
</pre> | </pre> | ||
+ | Copy MSVC8 contents into Tcc: | ||
+ | * constructor: replace _T("tcc") with _T("msvc8"), | ||
+ | * copy contents of Reset() - compiler options | ||
+ | * copy contents of LoadDefaultRegExArray() - feedback from compiler and linker to IDE | ||
+ | * in compilerTcc.cpp, function Reset(), change cl.exe, link.exe and rc.exe to cl.sh, link.sh, and rc.sh - default executables that will be used | ||
+ | Save and close the Tcc file. | ||
− | + | == Compiling Code::Blocks == | |
<pre> | <pre> | ||
− | |||
./bootstrap | ./bootstrap | ||
# New compilers need the permissive flag | # New compilers need the permissive flag | ||
./configure --with-contrib-plugins=all --prefix=/usr CXXFLAGS=-fpermissive | ./configure --with-contrib-plugins=all --prefix=/usr CXXFLAGS=-fpermissive | ||
− | make | + | make |
sudo make install | sudo make install | ||
</pre> | </pre> | ||
− | == Preparing MS VC2005 Express | + | == Preparing MS VC2005 Express == |
− | + | === IDE === | |
+ | Download the IDE and executables | ||
<pre> | <pre> | ||
− | + | winetricks vc2005express | |
+ | </pre> | ||
+ | Next, next, next ... | ||
+ | === Platform SDK === | ||
+ | This info comes from [http://appdb.winehq.org/objectManager.php?sClass=version&iId=9569 WineDB] | ||
+ | <pre> | ||
prefixName=vc2005express | prefixName=vc2005express | ||
− | prefixDir=$HOME/.local/share/wineprefixes | + | prefixDir=$HOME/.local/share/wineprefixes/ |
− | + | for ((i=1; i<=10; i++)) ; do wget http://download.microsoft.com/download/platformsdk/sdk/update/WIN98MeXP/EN-US/2600.2180/FULL/PSDK-FULL.$i.cab ; done | |
− | + | wget http://download.microsoft.com/download/platformsdk/sdk/update/WIN98MeXP/EN-US/2600.2180/FULL/PSDK-FULL.bat | |
− | + | wget http://download.microsoft.com/download/platformsdk/sdk/update/WIN98MeXP/EN-US/2600.2180/FULL/Extract.exe | |
− | + | WINEPREFIX=$prefixDir/$prefixName wine start.exe PSDK-FULL.bat "C:\psdktemp" | |
− | + | </pre> | |
− | + | Wait until the previous command finishes before executing the next one: | |
− | + | <pre> | |
+ | WINEPREFIX=$prefixDir/$prefixName wine "C:\psdktemp\Setup.Exe" | ||
+ | </pre> | ||
+ | Next, next, next ... | ||
− | + | === Symbolic links for ease === | |
− | cd $ | + | cd $prefixDir/$prefixName/drive_c |
− | ln -s Program\ Files/Microsoft\ Visual\ Studio\ 8/VC | + | mkdir vc && cd vc |
− | ln -s ../.. | + | ln -s ../Program\ Files/Microsoft\ Visual\ Studio\ 8/VC/bin/ |
+ | ln -s ../Program\ Files/Microsoft\ Visual\ Studio\ 8/VC/include/ | ||
+ | ln -s ../Program\ Files/Microsoft\ Visual\ Studio\ 8/VC/lib/ | ||
− | + | cd $prefixDir/$prefixName/drive_c | |
− | cd $ | + | mkdir psdk && cd psdk |
− | ln -s ../../Program\ Files/Microsoft\ | + | ln -s ../Program\ Files/Microsoft\ Platform\ SDK\ for\ Windows\ XP\ SP2/Include |
− | + | ln -s ../Program\ Files/Microsoft\ Platform\ SDK\ for\ Windows\ XP\ SP2/Lib | |
== VC++ Wine wrappers == | == VC++ Wine wrappers == | ||
− | |||
− | |||
− | |||
− | |||
Create the following files: | Create the following files: | ||
− | |||
~/devel/bin/cl.sh: | ~/devel/bin/cl.sh: | ||
− | |||
<pre> | <pre> | ||
#!/bin/bash | #!/bin/bash | ||
− | + | prefixName=vc2005express | |
− | wine | + | prefixDir=$HOME/.local/share/wineprefixes/ |
+ | WINEPREFIX=$prefixDir/$prefixName wine $prefixDir/$prefixName/drive_c/vc/bin/cl.exe /I"c:/vc/include" /I"c:/psdk/Include" $@ | ||
</pre> | </pre> | ||
− | |||
~/devel/bin/link.sh: | ~/devel/bin/link.sh: | ||
− | |||
<pre> | <pre> | ||
#!/bin/bash | #!/bin/bash | ||
− | + | prefixName=vc2005express | |
− | wine | + | prefixDir=$HOME/.local/share/wineprefixes/ |
+ | WINEPREFIX=$prefixDir/$prefixName wine $prefixDir/$prefixName/drive_c/vc/bin/link.exe /LIBPATH:"c:/vc/lib" /LIBPATH:"c:/psdk/Lib" $@ | ||
</pre> | </pre> | ||
− | |||
~/devel/bin/rc.sh: | ~/devel/bin/rc.sh: | ||
− | |||
<pre> | <pre> | ||
#!/bin/bash | #!/bin/bash | ||
− | + | prefixName=vc2005express | |
− | wine | + | prefixDir=$HOME/.local/share/wineprefixes/ |
+ | WINEPREFIX=$prefixDir/$prefixName wine $prefixDir/$prefixName/drive_c/vc/bin/rc.exe $@ | ||
</pre> | </pre> | ||
Line 123: | Line 103: | ||
== Setting up Code::Blocks == | == Setting up Code::Blocks == | ||
+ | * Download, open and use [http://enjomitchsorbit.svn.sourceforge.net/viewvc/enjomitchsorbit/launchmfd/LaunchMFD.cbp?view=log Launch MFD] project file as a template. | ||
* Execute codeblocks | * Execute codeblocks | ||
* Go to Settings->Compiler | * Go to Settings->Compiler | ||
− | * Select | + | * Select Tiny C Compiler |
* Select Toolchain executables tab | * Select Toolchain executables tab | ||
− | * In Compiler's installation directory, paste /home/<ENTER_YOUR_USERNAME>/devel | + | * In Compiler's installation directory, paste /home/<ENTER_YOUR_USERNAME>/devel and modify accordingly |
− | |||
− | |||
− | |||
− | |||
− | |||
* Add some sources and hit The Compile Button(TM) ! | * Add some sources and hit The Compile Button(TM) ! | ||
− | + | = Final considerations = | |
− | + | The compilation takes a lot of time, but in theory it could be made faster by running wineserver with -p command (persistant), so that Wine doesn't spawn the server on each tool call, but even if such a server is running, Wine seems to ignore it and spawns one anyway. The command to run the wineserver on Debian is: | |
− | + | <pre> | |
+ | /usr/lib/i386-linux-gnu/wine/wineserver -p | ||
+ | </pre> |