Developing application
Development environment for Application Developers
Developers use the system development kit for developing applications. This includes the following:
VOS3 build tools
gcc compiler
gcc build tools
VOS3 host debug tools
gdb debugger
VOS3 device debug tools
debug tools download package (dropbear, gdb, gdbserver, strace, etc.)
VOS3 packaging and development signing tool
packman
VOS3 system download files
VOS3 system download files for system update
VOS3 / ADK APIs
ADK headers, link libraries
ADK Documentation
ADK API Libraries
Applications use API prototypes from provided header files and link against the ADK libraries to access these APIs.
ADK GUIPRT
libvfiguiprt.so
html/gui.h
html/prt.h
ADK IPC
libvfiipc.so
libvfiipctls.so
ipc/ipc.h
ipc/notify.h
ipc/jsobject.h
ipc/tls.h
ADK COM
libcom.so
com/libcom.h
com/libcom3.h
ADK CCP
libccp.so
com/libccp.h
ADK MAC
libvfimac.so
libvficpr.so
sysinfo/mac.h
ADK PM
libvfisyspm.so
sysinfo/vfisyspm.h
ADK EMV
libEMV_CTLS_Client.a
libEMV_CT_Client.a
libEMV_CT_Link.so
libEMV_CTLS_Link.so
libsdiclient.a
libTLV_Util.so
emv/EMV_Common_Interface.h
emv/EMV_CT_Interface.h
emv/EMV_CTLS_Interface.h
emv/EMV_CT_SerInterface.h
emv/EMV_CTLS_SerInterface.h
emv/E2E_EMV_CT_Serialize.h
emv/E2E_EMV_CTLS_Serialize.h
emv/btlv.h
emv/EMV_CT_XML.h
emv/EMV_CTLS_XML.h
emv/hexutil.h
ADK MSR
libsdiclient.a
msr/msr.h
ADK TEC
libsdiclient.a
tec/tec.h
ADK NFC
libsdiclient.a
nfc/NFC_Client.h
nfc/NFC_Interface.h
ADK SYS
libvfisysinfo.so
libvfisysbar.so
sysinfo/sysinfo.h
sysinfo/leds.h
sysinfo/sysbar.h
sysinfo/sysbeep.h
sysinfo/inifile.h
ADK CPL
libcpl.so
commerce/commerce.h
ADK LOG
liblog.so
log/liblog2.h
ADK ISO8583
libiso8583.so
iso8583/ConstData.h
iso8583/dl_err.h
iso8583/dl_str.h
iso8583/dl_iso8583.h
iso8583/SafeBuffer.hpp
iso8583/dl_iso8583_fields.
iso8583/dl_base.h
iso8583/dl_iso8583_common.
iso8583/dl_mem.h
iso8583/defs/dl_iso8583_de
iso8583/defs/dl_AS2805_def
iso8583/fwd/ConstData.h
iso8583/fwd/SafeBuffer.hpp
ADK INF
libinf.so
libinf_util.so
inf/infodb.h
inf/inf_util.h
ADK SND
libsound.so
sound/sound.h
ADK SEC
libsec2.so
sec/libsec.h
ADK EVT
libevt.so
evt/libevt.h
ADK AGT
libsvc_tms.so
agt/svc_tms.h
agt/tms_status.h
SDI CLIENT
libsdiclient.a
libsdiprotocol.so
sdiclient/sdi_if.h
sdiclient/sdiprotocol.h
SDI C++ API
libsdiapi.so
sdiapi/sdi.h
INSTALLER
libinstall.so
installer/installer.hpp
Open Source libraries
In addition to ADK APIs, applications can use the following provided Open Source libraries directly from within applications.
Component
libraries
header files
Notes
OpenSSL
libssl.so
libcrypto.so
all headers
Compression
libz.so
all headers
CURL
libcurl.so
all headers
SQLite
libsqlite3.so
all headers
Libxml
libxml.so
libxml2.so
all headers
added in OSS release 1.9.1
Secondary Library dependencies
Provided client libraries have additional dependencies that are usually not reflected to the applications and they are being resolved internally.
Applications should only link to the above libraries, unless told differently.
VOS3 Platform internal libraries
Do not use internal libraries
The SDK contains additional libraries not listed above as supported ADK or Open Source libraries.
These libraries do not expose public interfaces for applications and can be subject to change with new VOS3 releases.
Please do not use these libraries directly!
Building Applications
The VOS3 toolchain comes with all typical tools to cross-compile and link applications:
Toolchain Application
Description
arm-none-linux-gnueabihf-addr2line
Convert addresses or symbol+offset into file names and line numbers
arm-none-linux-gnueabihf-ar
Create, modify, and extract from archives
arm-none-linux-gnueabihf-as
The portable GNU assembler
arm-none-linux-gnueabihf-c++
GNU project C and C++ compiler
arm-none-linux-gnueabihf-c++filt
Demangle C++ and Java symbols
arm-none-linux-gnueabihf-cpp
The C Preprocessor
arm-none-linux-gnueabihf-dwp
The DWARF packaging utility
arm-none-linux-gnueabihf-elfedit
Update ELF header and program property of ELF files
arm-none-linux-gnueabihf-g++
GNU project C and C++ compiler
arm-none-linux-gnueabihf-gcc
arm-none-linux-gnueabihf-gcc-11.2.1
GNU project C compiler
arm-none-linux-gnueabihf-gcc-ar
Create, modify, and extract from archives
arm-none-linux-gnueabihf-gcc-nm
List symbols from object files
arm-none-linux-gnueabihf-gcc-ranlib
Generate an index to an archive
arm-none-linux-gnueabihf-gcov
Coverage testing tool
arm-none-linux-gnueabihf-gcov-dump
Offline gcda and gcno profile dump tool
arm-none-linux-gnueabihf-gcov-tool
Offline gcda profile processing tool
arm-none-linux-gnueabihf-gdb
The GNU Debugger
arm-none-linux-gnueabihf-gdb-add-index
Add index files to speed up GDB
arm-none-linux-gnueabihf-gprof
Display call graph profile data
arm-none-linux-gnueabihf-ld
arm-none-linux-gnueabihf-ld.bfd
arm-none-linux-gnueabihf-ld.gold
The GNU linker
arm-none-linux-gnueabihf-lto-dump
Tool for dumping LTO object files
arm-none-linux-gnueabihf-nm
List symbols from object files
arm-none-linux-gnueabihf-objcopy
Copy and translate object files
arm-none-linux-gnueabihf-objdump
Display information from object files
arm-none-linux-gnueabihf-ranlib
Generate an index to an archive
arm-none-linux-gnueabihf-readelf
Display information about ELF files
arm-none-linux-gnueabihf-size
List section sizes and total size of binary files
arm-none-linux-gnueabihf-strings
Print the sequences of printable characters in files
arm-none-linux-gnueabihf-strip
Discard symbols and other data from object files
Compiler and Linker Settings
The following tables give an overview of recommended compiler and linker flags for application development on VOS3 platform.
CFLAGS
--sysroot $(SYSROOT_DIR)
Set the sysroot path to the root directory of your installed SDK
-D_VOS3
Flagging for platform-dependent code
-fstack-protector-strong
Enable extra checks for buffer overflows and and stack smashing
-fPIE
Enable position independent executable (**only use for executables**)
-fPIC
Enable position independent code (**only for shared/static libraries**)
-Wall
Enable all warnings (see manual of gcc for details)
-Wextra
Enable extra warnings (see manual of gcc for details)
-Wformat=2
Enable format check for functions like printf, scanf, ...
-Wformat-security
Enable warning about potentially malicious use of format functions
-Werror=format-security
Make format-security warnings an error
-Wtrampolines
Warn about trampolines generated for pointers to nested functions
-Werror=trampolines
Make trampoline warnings an error
-Wreturn-type
Warn about missing return types
-Werror=return-type
Make return type warnings an error
-Wno-psabi
Suppress GCC notes about ABI changes for parameter passing (informational only; not affected by -Wall/-Wextra)
LDFLAGS
--sysroot $(SYSROOT_DIR)
Set the sysroot path to the root directory of your installed SDK
-L$(SYSROOT_DIR)/usr/local/lib
Add this directory of your installed SDK to the linker search path
-fPIE -pie
Enable position independent executable (only use for executables)
-Wl,-rpath,'$$$$ORIGIN'
Set RPATH
-Wl,-z,relro,-z,now,-z,noexecstack
relro - Don't create an ELF "PT_GNU_RELRO" segment header in the object.
now - Resolve all symbols on startup or dlopen
noexecstac - Marks the object as requiring executable stack.
32 bits vs 64 bit user applications
Even if hardware and kernel supports 64 bits, application and ADK (executables and libraries) remain 32 bit. The goal is to keep compatibility between devices and also preserve size and performance.
This is enforced by packman.
Example: Hello World
The following part shows key parts of a sample project using ADK-GUI and SDI-API components. It's based on a Makefile project which shows compilation and generation of VOS3 load packages.
Full source package can be obtained from Verifone support.
Last updated
Was this helpful?
