This guide will help you get started setting up an environment on your personal computer to let you do most of the labs and MPs without remote connecting to the EWS machines. We highly recommend you attempt programming locally (on your own machine) or on an EWS computer, as the EWS remote servers have a history of going down and being slow. This will also enable you to work on assignments offline.
Disclaimer: Our grading runs are done on EWS machines, and we expect you to test your code thoroughly on EWS to ensure compatibility. You will be responsible for any issues arising from insufficient testing; no regrades will be given.
Remote Connect
You have two options for working remotely:
Please Note: if you are on an off-campus network you will need to use a VPN
- For Mac OS X or any other Unix-like variant, you will need to open a terminal session. (Applications->Utilities->Terminal)
- Run the command:
ssh NETID@linux.ews.illinois.edu
(replacingNETID
with your NetID) - If this is your first connection, it will then prompt you to accept the public key from the host; type
yes
at this prompt and hit enter. - At this point you should be prompted for your university password; note that you will not see any characters displayed as you type.
- If your password was successfully accepted you should have a fully functioning EWS shell.
- Run the command:
- For Windows you will need to download PuTTY.
- Once you download PuTTY you will be prompted to enter the address to the server. Use
NETID@linux.ews.illinois.edu
, substituting in your NetID. - You can save this by clicking the save button to the right of the highlighted default session. Optionally you could name this connection EWS.
- Now click connect and click “Yes” if it prompts you to accept the public key of the host machine.
- You will be asked to enter your university password; note you will not see any characters as they are typed.
- If your password was successfully accepted you should have a fully functioning EWS shell.
- Once you download PuTTY you will be prompted to enter the address to the server. Use
We recommend connecting to a console session since an excessive amount of FastX sessions tends to become unstable on the EWS cluster, and FastX connections can have unexpected behavior.
Working Natively
Windows
The Windows Subsystem for Linux (WSL) is a tool allowing Linux to run in Windows natively.
- Follow Microsoft’s instructions for installing WSL, choosing Ubuntu as the distribution.
- Continue following Microsoft’s instructions for initializing your Ubuntu distribution
- Download the packages used for C++ by running the following command to install the packages we will be using:
sudo apt-get update && sudo apt-get install clang-6.0 libc++abi-dev libc++-dev git gdb valgrind graphviz imagemagick gnuplot cmake
sudo update-alternatives --install /usr/bin/clang clang /usr/bin/clang-6.0 100
sudo update-alternatives --install /usr/bin/clang++ clang++ /usr/bin/clang++-6.0 100
sudo update-alternatives --install /usr/bin/llvm-symbolizer llvm-symbolizer /usr/bin/llvm-symbolizer-6.0 100
Using your Windows Desktop in WSL/Ubuntu
When you start Ubuntu, your shell will begin in the Linux home directory. However, you will likely want to work with files that are inside of your Windows file system. By default, your C:
drive is mounted at /mnt/c
.
Some find it useful to create a shortcut to jump directly to your Windows Desktop:
- Navigate to your Windows desktop within the Linux shell:
cd /mnt/c/Users/
cd <Your-User-Name-on Windows> // Use `ls` to find the available users in green
cd Desktop
- In your Windows Desktop directory you just navigated to, run the following command to create a symbolic link (ex: a shortcut) from your Linux home directory to your Windows desktop to easily navigate there in the future:
ln -s `pwd` ~/desktop
- In the future when you launch WSL/Ubuntu, you can immediately jump to your Windows desktop by running
cd desktop
.
Linux
You should make sure you have the following packages installed:
- Clang and libc++ and the libc++abi: The Clang compiler and the libc++ C++ standard library implementation. This provides all of the compiler Utilities. On most distros you will need to make sure you have
clang
,libc++
andlibc++abi
(or similar) packages installed. - Valgrind: A tool for finding memory leaks and general programming errors.
- Graphviz: Graph plotting tools used for assignments which display graphs and trees as images.
- GNUPlot: Plotting tools used for assignments which display graphs and charts as images.
- GDB: The GNU Debugger.
After installing the required packages, you should now be able to check out, build, and run assignments as described in their documentation.
Ubuntu >= 14.04
To get the packages you will need:
sudo apt-get update && sudo apt-get install clang-6.0 libc++abi-dev libc++-dev git gdb valgrind graphviz imagemagick gnuplot cmake
sudo update-alternatives --install /usr/bin/clang clang /usr/bin/clang-6.0 100
sudo update-alternatives --install /usr/bin/clang++ clang++ /usr/bin/clang++-6.0 100
sudo update-alternatives --install /usr/bin/llvm-symbolizer llvm-symbolizer /usr/bin/llvm-symbolizer-6.0 100
If you have a different version of clang installed, you might need to remove it first. Alternatively, if you don’t mind using a different version of clang, you can use the other version instead – just make sure to test your code on EWS.
Arch
To get the packages you will need:
sudo pacman -Sy base-devel clang gdb valgrind graphviz imagemagick git gnuplot cmake
You will also need to install libc++ and libc++-abi from the AUR.
macOS
Tools used on macOS will not always give results consistent with those used on EWS. Make sure to test your code on EWS to make sure it will work with our grading environment.
To install Homebrew: (You can skip this if you already have Homebrew installed)
In your terminal, (Applications->Utilities->Terminal) run:
xcode-select --install
to install the Xcode command line tools.
Next, we will install the Homebrew Package Manager for macOS using the following command:
/usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"
To install the necessary packages:
We need to install imagemagick
and graphviz
using Homebrew. Run:
brew install ghostscript
brew install imagemagick
brew install graphviz
brew install cmake
As you run each of these commands, it is recommended to follow Homebrew’s instructions for updating your PATH and compiler variables.
LLDB
LLDB is the default debugger for Xcode, so you should already have it installed by now. It is very similar to the GNU debugger, GDB. Here is a LLDB cheatsheet
Valgrind
Homebrew can also be used to install Valgrind.
To do so, run:
brew edit valgrind
This will open your default code editor. In the opened file, change the URL in the head
section from https://sourceware.org/git/valgrind.git
to git://sourceware.org/git/valgrind.git
and run the following:
brew update
brew install --HEAD valgrind