Main  /  Edit version 7  /  Edit version 8  /   /  Users Area

Difference "CppCMS For embedded systems" ver. 7 versus ver. 8

Content:

<!--toc-->
## General
Generally CppCMS can be used as-is for embedded systems. However there are many features that are heavy and targeted
for high performance web servers. These options
are rather useless for embedded system.
Thus additional build options that make this library optimized for embedded system provided.
They are reduce number of dependencies and make executable
significantly smaller.
## Changes in Embedded Build
### Normal Embedded Build
- Caching is completely removed. Small memory footprint
is very important for embedded system thus, caching
stuff in memory is quite useless.
- Zlib compression are removed -- it removes dependency on `boost::iostreams`, zlib and bzip2 libraries.
- Removed mod-prefork.
- Removed dynamic templates loading --- this feature requires export of symbols to binary and increases its size in order to make RTTI work. Thus, all templates should be
statically compiled into the binary.
### CGI Mode
- FastCGI and SCGI APIs are removed
- Mod-thread and mod process are removed including
all thread pool facilities
- Changes in files based session backend to work
properly with CGI mode including garbage collection
(sessions that had time-out).
### Minimal Dependencies
Embedded compilation allows building CppCMS using only following libraries:
- libcgicc
- libboost\_signals
- libboost\_regex.
## Cross Compilation of CppCMS
### General
For cross compilation you should use `--host` configuration switch according to your platform, for example:
./configure --host=arm-linux-eabi ...
./configure --host=mips-linux-gnu
Do not forget to build boost and cgicc as well. Refer to
your platform documentation for cross-compilation instructions.
### Build Flags:
- `--enable-embedded` -- Create embedded version of cppcms.
- `--enable-cgi` -- implement CGI API only.
_Additional flags:_
- `CXXFLAGS=-Os` -- optimize for size when you build
for embedded system
- `--prefix=/...` -- always specify installation prefix... You do not want to install to `/usr/local/lib`, `;-)`
For example:
./configure --host=arm-linux-gnu --prefix=/usr/arm-linux-gnu CXXFLAGS=-Os --enable-embedded --enable-cgi
Would configure cross compilation make files for ARM platform,
_Notes:_
- Remember that you should build cgicc and boost as well
- It is recommended to build `boost::regex` without ICU support in order to reduce executable size.
- Use `strip --strip-all` to reduce your executable size.
## Static Linking
In some cases you want to build your application
without dependencies on many shared objects.
Thus you can link your application "almost" statically.
Only system libraries like libc, libstdc++, pthreads, rt would be linked dynamically
### CGI Only
You can build "almost" static build as following:
g++ hello.o /path/to/libcppcms.a /path/to/libcppcmstranstext.a /path/to/libboost_signals.a /path/to/libboost_regex.a /path/to/libcgicc.a
### With Worker Threads
You can build "almost" static build as following:
g++ hello.o /path/to/libcppcms.a /path/to/libcppcmstranstext.a /path/to/libboost_signals.a /path/to/libboost_regex.a /path/to/libcgicc.a -lrt -lpthread

About

CppCMS is a web development framework for performance demanding applications.

Support This Project

SourceForge.net Logo

Поддержать проект

CppCMS needs You


Navigation

Main Page


Valid CSS | Valid XHTML 1.0