This file contains instructions for installing dependencies on different platforms. If you have all the prerequisites specified in the README file, you could simply skip following instructions.
- Known Issues
- If you run into error like
"Unknown extension ".c" for file /XXX/CheckIncludeFiles.c try_compile() works only for enabled languages. Currently these are: CXX
, you need to changeproject(aws-iot-sdk-cpp CXX)
toproject(aws-iot-sdk-cpp C CXX)
and addENABLE_LANGUAGE(C)
below it.
- If you run into error like
- Make sure to have CMake installed CMake Installation
- There is a reference for installing gcc-6 and g++-6 on raspberry pi. It also works for gcc-5/g++5 by replacing version number to 5. GCC-6 Installation
- You could create symlinks to choose which version of gcc/g++ to use update-alternatives. Assuming both gcc-5 and gcc-6 installed, the following commands will maintain symbolic links of both versions. In this case, gcc-5/g++-5 has higher priority (20) than gcc-6/g++-6 (10), which means the alternatives will point to gcc-5/g++-5 in automatic mode. You could change the priority based on your needs.
sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-5 20
sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-6 10
sudo update-alternatives --install /usr/bin/g++ g++ /usr/bin/g++-5 20
sudo update-alternatives --install /usr/bin/g++ g++ /usr/bin/g++-6 10
sudo update-alternatives --install /usr/bin/cc cc /usr/bin/gcc 30
sudo update-alternatives --set cc /usr/bin/gcc
sudo update-alternatives --install /usr/bin/c++ c++ /usr/bin/g++ 30
sudo update-alternatives --set c++ /usr/bin/g++
sudo update-alternatives --config gcc
sudo update-alternatives --config g++
- Install Openssl 1.1.0. Linux From Scratch has good guides on installing versions of OpenSSL from source.
- Build libssl-dev 1.1.0 or above.
- Install Homebrew if it's not installed
$ /usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"
- Install CMake
- You can build from source CMake Installation or
- Install directly using
brew install cmake
- If you use the .dmg installer, the following instructions are used to add the CMake path into $PATH after installation:
sudo vim /etc/paths
- Add the following line to the paths already present
/Applications/CMake.app/Contents/bin
- save and quit
- In a new terminal window, run
echo $PATH
. The path for CMake should be displayed, along with the other paths.
- With Mac OS, the default version of OpenSSL is not 1.1.0 and cannot be used with the SDK. Instead, version 1.1.0 needs to be installed.
To install OpenSSL 1.1.0:
- Update brew
brew update && brew upgrade
- Run
brew info openssl
to list the versions of openssl available Example output:openssl: stable 1.0.2l (bottled) [keg-only] SSL/TLS cryptography library https://openssl.org/ /usr/local/Cellar/openssl/1.0.2k (1,696 files, 12MB) Poured from bottle on 2017-02-03 at 14:20:40 /usr/local/Cellar/openssl/1.0.2l (1,709 files, 12.1MB) Poured from bottle on 2017-05-31 at 15:32:30
Use the latest stable 1.0.2 version available, which is 1.0.2l here - Run
brew switch openssl@<latest stable 1.1 version>
. If the version is already installed, the path for this version of OpenSSL will be displayed. Example output:Cleaning /usr/local/Cellar/openssl/1.0.2l Opt link created for /usr/local/Cellar/openssl@1.1/1.1.1m
Use the path (/usr/local/Cellar/openssl@1.1/1.1.1m
in the example above) in your <BASE_SDK_DIRECTORY>/network/CMakeLists.txt - If not installed, run
brew install openssl --force
after the switch operation. The path will be displayed at the end of the installation.
- Update brew
After that follow the below steps.
-
Open <BASE_SDK_DIRECTORY>/network/CMakelists.txt.in
-
Comment out the below line in default OpenSSL section by adding # in front of it
#find_package(OpenSSL REQUIRED)
-
Add following two lines below the line commented out in default OpenSSL section. Replace "YOUR_OPENSSL_PATH" with the path obtained from the
brew switch
orbrew install
commandset(OPENSSL_LIBRARIES "YOUR_OPENSSL_PATH/lib/libssl.a;YOUR_OPENSSL_PATH/lib/libcrypto.a")
set(OPENSSL_INCLUDE_DIR "YOUR_OPENSSL_PATH/include")
-
Both the Websocket and OpenSSL builds work on windows. The latest version of OpenSSL 1.1.0 needs to be installed for them to work properly.
-
Download and install the latest version of OpenSSL 1.1.0 from this link
-
Download and install CMake for Windows from this link
-
Download and install git from this link. Please be sure to install git bash as well.
-
Open the Git Bash terminal and navigate to the folder where you want the SDK to be downloaded.
-
Clone the repository in this folder. Once finished, change directory to the downloaded repo.
-
Create a
build
folder. Change directory to the build folder. -
Run the following command:
<absolute path to cmake install directory>/bin/cmake -G "Visual Studio 14 2015 Win64" ../.
-
The above command will generate a Visual studio solution file called
aws-iot-sdk-cpp
. Open this file in VS2015. -
The list of available targets will show up in the solution explorer.
-
Before running available targets, be sure to change the working directory of the project to Output directory.
-
There are known issues with the Windows Build currently. Please check the Known Issues file for more information.
-
Install CMake CMake Installation
-
To update to OpenSSL 1.1.0
sudo apt-get install make
(if not already installed)wget https://www.openssl.org/source/openssl-1.1.0.tar.gz
tar -xzvf openssl-1.1.0g.tar.gz
cd openssl-1.1.0g
sudo ./config
sudo make install
sudo ln -sf /usr/local/ssl/bin/openssl <which openssl>
openssl version -v
(should show correct version of OpenSSL)
-
To install libssl-dev
-
Add the following PPA sources into
/etc/apt/sources.list
(Warning: This may break your setup) :deb [arch=i386,amd64] http://archive.ubuntu.com/ubuntu xenial main restricted universe multiverse
deb [arch=i386,amd64] http://security.ubuntu.com/ubuntu xenial-security main restricted universe multiverse
deb [arch=i386,amd64] http://archive.ubuntu.com/ubuntu xenial-backports main restricted universe multiverse
deb [arch=arm64,armhf,powerpc] http://ports.ubuntu.com/ xenial main restricted universe multiverse
deb [arch=arm64,armhf,powerpc] http://ports.ubuntu.com/ xenial-security main restricted universe multiverse
deb [arch=arm64,armhf,powerpc] http://ports.ubuntu.com/ xenial-backports main restricted universe multiverse
deb-src http://archive.ubuntu.com/ubuntu xenial main restricted universe multiverse
deb-src http://security.ubuntu.com/ubuntu xenial-security main restricted universe multiverse
deb-src http://archive.ubuntu.com/ubuntu xenial-backports main restricted universe multiverse
deb-src http://ports.ubuntu.com/ xenial main restricted universe multiverse
deb-src http://ports.ubuntu.com/ xenial-security main restricted universe multiverse
deb-src http://ports.ubuntu.com/ xenial-backports main restricted universe multiverse
-
sudo apt-get update
-
sudo dpkg --configure -a --force-all
(to fix broken libraries) -
sudo apt-get -f install
(to fix broken libraries) -
sudo apt-get install libssl-dev
-
Delete the above additions from
/etc/apt/sources.list
(to remove the xenial backports from the sources list) -
sudo apt-get update
-