You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
# currently gcc is not supported due to problems cross-compiling a unikernel
16
-
# (i.e., building a 32bit unikernel (only supported for now) on a 64bit system)
17
-
# message(FATAL_ERROR "Building IncludeOS with gcc is not currently supported. Please clean-up build directory and configure for clang through CC and CXX environmental variables.")
18
-
endif(CMAKE_COMPILER_IS_GNUCC)
30
+
# C++ version
31
+
set(CMAKE_CXX_STANDARD 14)
19
32
20
33
# create OS version string from git describe (used in CXX flags)
21
34
execute_process(COMMANDgitdescribe--dirty
@@ -34,8 +47,10 @@ else()
34
47
set(DEFAULT_VM "vm.cpu_feat.json") # vmrunner
35
48
endif(cpu_feat_vanilla)
36
49
50
+
option(single_threaded"Compile without SMP support"ON)
51
+
37
52
# create random hex string as stack protector canary
Copy file name to clipboardExpand all lines: README.md
+17-16Lines changed: 17 additions & 16 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -1,10 +1,6 @@
1
1

2
2
================================================
3
3
4
-
**Update**: Check out [Acorn](examples/acorn/), the innovative web server appliance we [demoed at CppCon](https://www.youtube.com/watch?v=t4etEwG2_LY). Built using [Mana](lib/mana/), the new C++ Web Application Framework for IncludeOS.
5
-
6
-
A *live demo* of Acorn can be found at [acorn2.unofficial.includeos.io](http://acorn2.unofficial.includeos.io) (sporadically unavailable)
7
-
8
4
**IncludeOS** is an includable, minimal [unikernel](https://en.wikipedia.org/wiki/Unikernel) operating system for C++ services running in the cloud. Starting a program with `#include <os>` will literally include a tiny operating system into your service during link-time.
9
5
10
6
The build system will:
@@ -24,8 +20,8 @@ IncludeOS is free software, with "no warranties or restrictions of any kind".
| Dev |[](https://jenkins.includeos.org/job/shield_dev_bundle/)|[](https://jenkins.includeos.org/job/shield_dev_integration_tests/)|
| Dev |[](https://jenkins.includeos.org/job/shield_dev_bundle/)|[](https://jenkins.includeos.org/job/shield_dev_integration_tests/)|
29
25
30
26
### Key features
31
27
@@ -48,22 +44,22 @@ A longer list of features and limitations is on the [wiki feature list](https://
48
44
49
45
By default the project is installed to /usr/local/includeos.
50
46
51
-
However, it is recommended to choose a custom location as well as select the compiler we want clang to find.
47
+
However, it is recommended to choose a custom location as well as select the compiler we want clang to find. In this document we assume you install IncludeOS in your home directory, in the folder ~/includeos.
52
48
53
-
To do this we can edit ~/.bashrc (in the home folder), adding these lines at the end of the file:
49
+
To do this we can edit ~/.bash_profile (mac os) or ~/.bashrc (linux), adding these lines at the end of the file:
54
50
55
51
```
56
-
export CC=/usr/bin/clang-3.8
57
-
export CXX=/usr/bin/clang++-3.8
58
-
export INCLUDEOS_PREFIX=<HOME FOLDER>/includeos
52
+
export INCLUDEOS_PREFIX=~/includeos/
59
53
export PATH=$PATH:$INCLUDEOS_PREFIX/bin
60
54
```
61
55
62
56
This will also crucially make the boot program visible globally, so that you can simply run ```boot <myservice>``` inside any service folder.
63
57
64
58
### Install libraries
65
59
66
-
**NOTE:** The script will install packages and create a network bridge.
60
+
If you want to install IncludeOS on Mac OS you'll need a working installation of [brew] so the install script can install its dependencies.
61
+
62
+
**NOTE:** The script will install packages.
67
63
68
64
```
69
65
$ git clone https://github.com/hioa-cs/IncludeOS
@@ -85,19 +81,20 @@ Configuration of your IncludeOS installation can be done inside `build/` with `c
85
81
86
82
### Testing the installation
87
83
88
-
A successful setup enables you to build and run a virtual machine. Running:
84
+
A successful setup enables you to build and run a virtual machine. There are a few demonstration services in the source folder. If you look in the `examples/` folder you see these. If you enter `demo_service` and type `boot --create-bridge .` this script will build the service and boot it using [qemu].
89
85
90
86
```
91
-
$ ./test.sh
87
+
$ cd examples/demo_service
88
+
$ boot --create-bridge .
92
89
```
93
90
94
-
will build and run [this example service](./examples/demo_service/service.cpp).
91
+
will build and run [this example service](./examples/demo_service/service.cpp). You can visit the service on [http://10.0.0.42/](http://10.0.0.42/).
95
92
96
93
More information is [available on the wiki](https://github.com/hioa-cs/IncludeOS/wiki/Testing-the-example-service).
97
94
98
95
### Writing your first service
99
96
100
-
1. Copy the [./seed/service](./seed/service) directory to a convenient location like `~/your_service`. Then, just start implementing the `Service::start` function in the `Service` class, located in [your_service/service.cpp](./seed/service/service.cpp) (Very simple example provided). This function will be called once the OS is up and running.
97
+
1. Copy the [./seed/service](./seed/service) directory to a convenient location like `~/your_service`. Then, just start implementing the `Service::start` function in the `Service` class, located in [your_service/service.cpp](./seed/service/service.cpp) (very simple example provided). This function will be called once the OS is up and running.
101
98
2. Update the [CMakeLists.txt](./seed/service/CMakeLists.txt) to specify the name of your project, enable any needed drivers or plugins, etc.
102
99
103
100
**Example:**
@@ -130,3 +127,7 @@ We want to adhere as much as possible to the [ISO C++ Core Guidelines](https://g
130
127
We're trying to grow a Wiki, and some questions might already be answered here in the [FAQ](https://github.com/hioa-cs/IncludeOS/wiki/FAQ).
131
128
132
129
See the [Wiki front page](https://github.com/hioa-cs/IncludeOS/wiki) for a complete introduction, system overview, and more detailed guides.
0 commit comments