X-Git-Url: https://gerrit.automotivelinux.org/gerrit/gitweb?a=blobdiff_plain;f=README.md;h=d95824ffc24ade3c847b6176a9b9abc191f3d2a0;hb=14642c83dcd773d0800ee0e1715a380593c6b707;hp=ec73e01c330c87c155d718fa53954510762ab459;hpb=d2e42029ec04c3f224580f8007cdfbbfe0fc47a6;p=apps%2Fagl-service-unicens.git diff --git a/README.md b/README.md index ec73e01..d95824f 100644 --- a/README.md +++ b/README.md @@ -1,5 +1,5 @@ ------------------------------------------------------------------------ -AGL-Unicens binding expose Unicens-V2 APIs through AGL framework +AGL-UNICENS binding expose UNICENS-V2 APIs through AGL framework ------------------------------------------------------------------------ @@ -7,7 +7,7 @@ AFB_daemon dependency on Standard Linux Distributions ------------------------------------------------------- # handle dependencies > (OpenSuse-42.2, Fedora-25, Ubuntu 16.04.2LTS) gcc > 4.8 - systemd-devel (libsystemd-dev>=222) + systemd-devel (libsystemd-dev>=222) libuuid-devel file-devel(OpenSuSe) or libmagic-dev(Ubuntu) libjson-c-devel @@ -15,11 +15,11 @@ AFB_daemon dependency on Standard Linux Distributions ElectricFence (BUG should not be mandatory) libopenssl-devel libgcrypt-devel libgnutls-devel (optional but requested by libmicrohttpd for https) - OpenSuse >=42.2 - zypper in gcc5 gdb gcc5-c++ git make ElectricFence systemd-devel libopenssl-devel libuuid-devel alsa-devel libgcrypt-devel libgnutls-devel libjson-c-devel file-devel + OpenSuse >=42.2 + zypper in gcc5 gdb gcc5-c++ git cmake make ElectricFence systemd-devel libopenssl-devel libuuid-devel alsa-devel libgcrypt-devel libgnutls-devel libjson-c-devel file-devel mxml-devel Ubuntu >= 16.4 libuuid-devel - apt-get install cmake git electric-fence libsystemd-dev libssl-dev uuid-dev libasound2-dev libgcrypt20-dev libgnutls-dev libgnutls-dev libjson-c-dev libmagic-dev + apt-get install cmake git electric-fence libsystemd-dev libssl-dev uuid-dev libasound2-dev libgcrypt20-dev libgnutls-dev libgnutls-dev libjson-c-dev libmagic-dev libmxml-dev libmicrohttpd>=0.9.54 (as today OpenSuse-42.2 or Ubuntu-.16.4 ship older versions) afb-daemon from AGL Gerrit git clone https://gerrit.automotivelinux.org/gerrit/src/app-framework-binder @@ -29,7 +29,7 @@ AFB_daemon dependency on Standard Linux Distributions echo "#---------- AGL options Start ---------" >>~/.bashrc echo "# Object: AGL cmake option for binder/bindings" >>~/.bashrc echo "# Date: `date`" >>~/.bashrc - echo 'export CC=gcc-5; export CXX=g++-5' >>~/.bashrc # if using gcc5 + echo 'export CC=gcc-5; export CXX=g++-5' >>~/.bashrc # if using gcc5 echo 'export INSTALL_PREFIX=$HOME/opt' >>~/.bashrc echo 'export LD_LIBRARY_PATH=$INSTALL_PREFIX/lib64:$INSTALL_PREFIX/lib' >>~/.bashrc echo 'export LIBRARY_PATH=$INSTALL_PREFIX/lib64:$INSTALL_PREFIX/lib' >>~/.bashrc @@ -53,29 +53,74 @@ AFB_daemon dependency on Standard Linux Distributions git clone https://gerrit.automotivelinux.org/gerrit/src/app-framework-binder # Warning: previous GCC options should be set before initial cmake (clean Build/*) - cd app-framework-binder; mkdir build; cd build + cd app-framework-binder; mkdir -p build; cd build cmake -DCMAKE_INSTALL_PREFIX=$INSTALL_PREFIX .. make - make install + make install ``` -``` # Compile binding ``` -source ~/.bashrc # or any other file where your have place your compilation preferences -mkdir build -cd build -cmake -DCMAKE_INSTALL_PREFIX=$INSTALL_PREFIX .. -make + source ~/.bashrc # or any other file where your have place your compilation preferences + mkdir -p build + cd build + cmake -DCMAKE_INSTALL_PREFIX=$INSTALL_PREFIX .. + make - afb-daemon --ldpaths=. --port=1234 --workdir=. --roothttp=./htdocs --token="" --verbose + afb-daemon --workdir=.. --ldpaths=build --port=1234 --roothttp=./htdocs --token="" --verbose speaker-test -twav -D hw:ep01 -c 2 firefox http://localhost:1234 ``` +# Archive + +``` +VERSION=0.1 +GIT_TAG=master +PKG_NAME=UNICENS-agent +git archive --format=tar.gz --prefix=${PKG_NAME}-${VERSION}/ ${GIT_TAG} -o ${PKG_NAME}_${VERSION}.orig.tar.gz +``` + +# Local Source Debug with GDB + +Warning: technically AGL bindings are shared libraries loaded thought 'dlopen'. GDB supports source debug of dynamically +loaded libraries, but user should be warn that the actual path to sharelib symbols is directly inherited from DLOPEN. +As a result if you change your directory after binder start with --workdir=xxx then GDB will not find symbols anymore + + +``` + Examples: + + # WORK when running in direct + afb-daemon --workdir=.. --ldpaths=build --port=1234 --roothttp=./htdocs + + # FAIL when using GDB with warning: Could not load shared library .... + gdb -args afb-daemon --workdir=.. --ldpaths=build --port=1234 --roothttp=./htdocs + ... + warning: Could not load shared library symbols for ./build/ucs2-afb/afb-ucs2.so. + Do you need "set solib-search-path" or "set sysroot"? + ... +``` + +To debug sharelib symbol path: start your binder under GDB. Then break your session after the binder has +loaded its bindings. Finally use "info sharedlibrary" and check 'SymsRead'. If equal to 'No' then either you start GDB +from the wrong relative directory, either you have to use 'set solib-search-path' to force the path. + +``` + gdb -args afb-daemon --workdir=.. --ldpaths=build --port=1234 --roothttp=./htdocs + run + ... + NOTICE: API UNICENS added + NOTICE: Waiting port=1234 rootdir=. + NOTICE: Browser URL= http://localhost:1234 + (hit Ctrl-C to break the execution) + info sharedlibrary afb-* +``` + + # Running an debugging on a target ``` @@ -99,4 +144,6 @@ Note: remote-target-populate will - create a gdbinit file to transparently debug remotely in source code with gdb -x ./build/target/gdb-on-target-name.ini - to run and debug directly from your IDE just configure the run and debug properties with the corresponding filename +Note that Netbeans impose to set debug directory to ./build/pkgout or it won't find binding symbols for source debugging +