As promised, here’s the link to the build of Swift for the ODROID C2. This build was done on Ubuntu 20.04. Your results on other platforms/distros will most certainly vary. USE AT YOUR OWN RISK – I provide absolutely NO WARRANTY, implied or otherwise, with this what so ever.
EDIT: 2020-09-22 – You will probably also have to make sure some prerequisites are installed before hand.
sudo apt update
sudo apt install python-six
sudo apt install \
clang \
cmake \
git \
icu-devtools \
libcurl4-openssl-dev \
libedit-dev \
libicu-dev \
libncurses5-dev \
libpython2-dev \
libsqlite3-dev \
libxml2-dev \
ninja-build \
pkg-config \
python \
rsync \
swig \
systemtap-sdt-dev \
tzdata \
uuid-devInstallation should be pretty straight forward.
cd /opt sudo tar xvf <PATH-TO-DOWNLOADS>/swift5.3-odroid-c2-ubuntu20.04.tar.bz2
Then all you should have to do is add “/opt/swift5.3/bin” folder to your path.
echo "export PATH=\"\$PATH:/opt/swift5.3/bin\"" >> ~/.bashrc
Then to test it out just create a file called “Layout.swift” with the contents below.
import Foundation
print("")
print(" Int8 - size: \(MemoryLayout<Int8>.size); stride: \(MemoryLayout<Int8>.stride); alignment: \(MemoryLayout<Int8>.alignment)")
print("Int16 - size: \(MemoryLayout<Int16>.size); stride: \(MemoryLayout<Int16>.stride); alignment: \(MemoryLayout<Int16>.alignment)")
print("Int32 - size: \(MemoryLayout<Int32>.size); stride: \(MemoryLayout<Int32>.stride); alignment: \(MemoryLayout<Int32>.alignment)")
print("Int64 - size: \(MemoryLayout<Int64>.size); stride: \(MemoryLayout<Int64>.stride); alignment: \(MemoryLayout<Int64>.alignment)")
print(" Int - size: \(MemoryLayout<Int>.size); stride: \(MemoryLayout<Int>.stride); alignment: \(MemoryLayout<Int>.alignment)")
print("")
print(" UInt8 - size: \(MemoryLayout<UInt8>.size); stride: \(MemoryLayout<UInt8>.stride); alignment: \(MemoryLayout<UInt8>.alignment)")
print("UInt16 - size: \(MemoryLayout<UInt16>.size); stride: \(MemoryLayout<UInt16>.stride); alignment: \(MemoryLayout<UInt16>.alignment)")
print("UInt32 - size: \(MemoryLayout<UInt32>.size); stride: \(MemoryLayout<UInt32>.stride); alignment: \(MemoryLayout<UInt32>.alignment)")
print("UInt64 - size: \(MemoryLayout<UInt64>.size); stride: \(MemoryLayout<UInt64>.stride); alignment: \(MemoryLayout<UInt64>.alignment)")
print(" UInt - size: \(MemoryLayout<UInt>.size); stride: \(MemoryLayout<UInt>.stride); alignment: \(MemoryLayout<UInt>.alignment)")
print("")
print(" Float - size: \(MemoryLayout<Float>.size); stride: \(MemoryLayout<Float>.stride); alignment: \(MemoryLayout<Float>.alignment)")
print(" Double - size: \(MemoryLayout<Double>.size); stride: \(MemoryLayout<Double>.stride); alignment: \(MemoryLayout<Double>.alignment)")
print("")
print("timespec - size: \(MemoryLayout<timespec>.size); stride: \(MemoryLayout<timespec>.stride); alignment: \(MemoryLayout<timespec>.alignment)")
print("")Then run it like this:
swift Layout.swift
You should see the following output.

Enjoy!