STB (Set Top Box) devices usually run from NAND partitions. All the rootfs is persisted in read-only filesystem (squashfs) and mounts additional R/W locations if needed (ramdisk for /tmp storage, at least). This setup works quite well for final deployment, but might be a bit problematic if you, actually, develop software stack and need to update and test many times per day.
This is the place where long-time forgotten network boot method comes to play.
In the old days (university) I remember "thin Solaris clients" that were used for programming classes. They had no hard disk and booted from network. What the boot process does look like?
Posted in en
Tagged iptv, STB
Few, most important in my opinion, however mostly overlooked GCC compiler switches:
- -Wall: enables all the warnings about constructions that some users consider questionable, very likely a programming mistakes
- -Wextra: enables some extra warning flags that are not enabled by -Wall
- -Winit-self: warn about uninitialized variables which are initialized with themselves
- -Wold-style-cast: warn if an old-style (C-style) cast to a non-void type is used within a C++ program
- -Woverloaded-virtual: warn when a function declaration hides virtual functions from a base class
- -Wuninitialized: warn if an automatic variable is used without first being initialized
- -Wmissing-declarations: warn if a global function is defined without a previous declaration
- -ansi, -std=standard: specify the C/C++ standard level used
- -pedantic: issue all the warnings demanded by strict ISO C and ISO C++, and -pedantic-errors that tunrs them into errors (aborts compilation)
and the most important one:
- -Werror: turns warnings into errors, so your build would go red in case of any warning
I must admit we used to use "-Werror" extensively for many years and many pitfalls are omitted then automatically.
Default git colour setup is not so good. On black terminal background it looks dark:
However, with small change in ~/.git/config file:
meta = yellow bold
frag = magenta bold
old = red bold
new = green bold
you would get much better diff display on your terminal:
When you see the following kind of errors during cross compilation (linking phase):
ld: warning: libfontconfig.so.1, needed by …/libQtGui.so, not found (try using -rpath or -rpath-link)
ld: warning: libaudio.so.2, needed by …/libQtGui.so, not found (try using -rpath or -rpath-link)
There could be two reasons:
- the list of required binaries is not complete and linker cannot complete the linking automatically
- your $SYSROOT/usr/lib is not passed to linker by -rpath-link as mentioned in error message
During normal native build your libraries are stored in standard locations (/usr/lib) and locating libraries is easier. Cross compilation needs more attention in this ares as SYSROOT is not standard.
Then search for LDFLAGS setup in your build scripts:
And change to the following:
The clumsy syntax -Wl,<options-with-comma-as-space> tells your compiler (that is used for linking purposes) to pass the options (with commas replaced by spaces of course) to linker (ld).
Posted in en