2

I am working on IMX7(Phytec zeta board) with yocto linux. On already working helloworld recipe(named as imx7-2110) I added some application source files(C, C++, h, hpp), created a make file and edited .bb files accordingly. on compilation I am getting error that one of the .hpp file(PktDriverAbstractionLayer.hpp) is not found, although it present in source directory and corresponding path is given to .bb file.

What could be the reason? I tried some suggestion available on internet forums but it didn't help.

Details of error are here:

[root@localhost build]# bitbake imx7-2110
Loading cache: 100% |###########################################| ETA:        
00:00:00
Loaded 2800 entries from dependency cache.
Parsing recipes: 100% |#########################################| Time: 
00:00:00
Parsing of 2223 .bb files complete (2222 cached, 1 parsed). 2799 targets,    
220 skipped, 5 masked, 0 errors.
WARNING: No bb files matched BBFILE_PATTERN_phytec '^/opt/PHYTEC_BSPs   
/yocto_imx7/sources/meta-phytec/common/'
NOTE: Resolving any missing task queue dependencies

Build Configuration:
BB_VERSION        = "1.30.0"
BUILD_SYS         = "x86_64-linux"
NATIVELSBSTRING   = "CentOSLinux-7.4.1708"
TARGET_SYS        = "arm-poky-linux-gnueabi"
MACHINE           = "imx7d-phyboard-zeta-001"
DISTRO            = "fsl-imx-x11"
DISTRO_VERSION    = "4.1.15-2.0.1"
TUNE_FEATURES     = "arm armv7ve vfp  neon        callconvention-hard          
cortexa7"
TARGET_FPU        = "hard"
meta              
meta-yocto        = "HEAD:f5da2a5913319ad6ac2141438ba1aa17576326ab"
meta-oe           
meta-multimedia   = "HEAD:247b1267bbe95719cd4877d2d3cfbaf2a2f4865a"
meta-fsl-arm      = "HEAD:be78894e4682f111575470fb23e51e6ba523508d"
meta-fsl-arm-extra = "HEAD:3dfb82fc7e703eae9891b3ffda0e9393701f2396"
meta-fsl-demos    = "HEAD:a165068f8a0d1cf29aabe4b4053f28be1c2aa492"
meta-bsp          
meta-sdk          = "HEAD:90399d99af8a2660ebe50b49752e95b210239fd9"
meta-browser      = "HEAD:77736988073a5d90fcff9d0005c8477332ede387"
meta-gnome        
meta-networking   
meta-python       
meta-filesystems  = "HEAD:247b1267bbe95719cd4877d2d3cfbaf2a2f4865a"
meta-qt5          = "HEAD:ccae79be69c5268df3b47e4e14cea0591c39a531"
meta-phytec       
meta-phytec-fsl   = "HEAD:0b1de01225a2ec0debf71eb13be403baa9f4919f"
meta-imx7-2110    = "<unknown>:<unknown>"

NOTE: Preparing RunQueue
NOTE: Executing SetScene Tasks
NOTE: Executing RunQueue Tasks
ERROR: imx7-2110-0.1-r0 do_compile: Function failed: do_compile (log file   
is located at /opt/PHYTEC_BSPs/yocto_imx7/build/tmp/work/cortexa7hf-  
neon-poky-linux-gnueabi/imx7-2110/0.1-r0/temp/log.do_compile.7235)
ERROR: Logfile of failure stored in: /opt/PHYTEC_BSPs/yocto_imx7/build
/tmp/work/cortexa7hf-neon-poky-linux-gnueabi/imx7-2110/0.1-r0 
/temp/log.do_compile.7235
Log data follows:
| DEBUG: Executing shell function do_compile
| arm-poky-linux-gnueabi-g++  -march=armv7ve -mfpu=neon  -mfloat-abi=hard    
-mcpu=cortex-a7 --sysroot=/opt/PHYTEC_BSPs/yocto_imx7/build/tmp/sysroots
/imx7d-phyboard-zeta-001 -c -pthread -std=c++11    -O2 -pipe -g  
-feliminate-unused-debug-types -fdebug-prefix-map=/opt/PHYTEC_BSPs 
/yocto_imx7/build/tmp/work/cortexa7hf-neon-poky-linux-gnueabi/imx7-2110
/0.1-r0=/usr/src/debug/imx7-2110/0.1-r0 -fdebug-prefix-map=/opt
/PHYTEC_BSPs/yocto_imx7/build/tmp/sysroots/x86_64-linux= -fdebug-prefix-
map=/opt/PHYTEC_BSPs/yocto_imx7/build/tmp/sysroots/imx7d-phyboard-
zeta-001=  -fvisibility-inlines-hidden -g -c -Wall -Wextra -pthread 
-std=c++0x  pcieman_client.cpp -o pcieman_client.o
| In file included from pcieman_client.cpp:45:0:
| PktDriverUDPManager.hpp:18:41: fatal error: 
PktDriverAbstractionLayer.hpp: No such file or directory
| compilation terminated.
| make: *** [pcieman_client.o] Error 1
| WARNING: /opt/PHYTEC_BSPs/yocto_imx7/build/tmp/work/cortexa7hf-  
neon-poky-linux-gnueabi/imx7-2110/0.1-r0/temp/run.do_compile.7235:1 exit 2  
from 'make'
| ERROR: Function failed: do_compile (log file is located at   
/opt/PHYTEC_BSPs/yocto_imx7/build/tmp/work/cortexa7hf-neon-poky-linux-
gnueabi/imx7-2110/0.1-r0/temp/log.do_compile.7235)
ERROR: Task 6 (/opt/PHYTEC_BSPs/yocto_imx7/sources/meta-imx7-2110/recipes-
example/example/imx7-2110_0.1.bb, do_compile) failed with exit code '1'
NOTE: Tasks Summary: Attempted 351 tasks of which 346 didn't need to be   
rerun and 1 failed.
No currently running tasks (351 of 358)

Summary: 1 task failed:
  /opt/PHYTEC_BSPs/yocto_imx7/sources/meta-imx7-2110/recipes-example  
/example/imx7-2110_0.1.bb, do_compile
Summary: There was 1 WARNING message shown.
Summary: There was 1 ERROR message shown, returning a non-zero exit code.
[root@localhost build]#

Update with recipe: # # This file was derived from the 'Hello World!' example recipe in the # Yocto Project Development Manual. #

SUMMARY = "Simple helloworld application"
SECTION = "examples"
LICENSE = "MIT"
LIC_FILES_CHKSUM = "file://${COMMON_LICENSE_DIR}                              
/MIT;md5=0835ade698e0bcf8506ecda2f7b4f302"

SRC_URI = "file://build/build.tar.gz \ 
   file://src/src.tar.gz \
       file://include/include.tar.gz \  
       file://xpcie.h \
  "    

S = "${WORKDIR}"

#EXTRA_OEMAKE += "CPPFLAGS='-c -pthread -std=c++11'"
#EXTRA_OEMAKE += "CXXFLAGS='-g -c -Wall -Wextra -pthread -std=c++0x'"  

do_compile() {
     make 
}

do_install() {
     install -d ${D}${bindir}
     install -m 0755 pcieman_client ${D}${bindir}
}

Here is also make with supplementary Info:

# Define Compiler to use
CC=g++
# Define default compiler options
# Flags passed to the preprocessor.
CPPFLAGS=-c -pthread -std=c++11 
CXXFLAGS += -g -c -Wall -Wextra -pthread -std=c++0x 

LFLAGS=-Bsymbolic

all: pcieman_client    

pcieman_client:  pcieman_client.o parser.o udp_socket_class.o    
ds_api_class.o syn1588_class.o tr03_class.o pio_class.o search_api_class.o   
packet_proc_class.o socket_tools.o crc_calc.o stdafx.o transaction_class.o 
lpq_api_class.o fileIn_class.o vip_Rx_udp.o  vip_Tx_udp.o 
PktDriverAbstractionLayer.o PktDriverUDPManager.o StateMachine.o 
MessageEvent.o appl_menu.o 
$(CC) $(LFLAGS) -lpthread pcieman_client.o parser.o udp_socket_class.o  
ds_api_class.o syn1588_class.o tr03_class.o pio_class.o search_api_class.o 
packet_proc_class.o socket_tools.o crc_calc.o stdafx.o transaction_class.o 
lpq_api_class.o fileIn_class.o vip_Rx_udp.o vip_Tx_udp.o   
PktDriverAbstractionLayer.o PktDriverUDPManager.o StateMachine.o 
appl_menu.o MessageEvent.o  -o pcieman_client

pcieman_client.o: version.h udp_socket_class.h socket_tools.h 
packet_proc_class.h transaction_class.h parser_params.h parser.h 
pcieman_client.cpp 
$(CXX) $(CPPFLAGS)  $(CXXFLAGS) pcieman_client.cpp -o pcieman_client.o


udp_socket_class.o: udp_socket_class.h udp_socket_class.cpp
$(CC) $(CPPFLAGS) udp_socket_class.cpp -o udp_socket_class.o

appl_menu.o: appl_menu.hpp appl_menu.cpp
$(CXX) $(CPPFLAGS) $(CXXFLAGS) appl_menu.cpp -o appl_menu.o

ds_api_class.o: ds_api_class.h ds_api_class.cpp
$(CC) $(CPPFLAGS) ds_api_class.cpp -o ds_api_class.o

search_api_class.o: crc_calc.h search_api_class.h search_api_class.cpp
$(CC) $(CPPFLAGS) search_api_class.cpp -o search_api_class.o

pio_class.o: crc_calc.h pio_class.h pio_class.cpp
$(CC) $(CPPFLAGS) pio_class.cpp -o pio_class.o

syn1588_class.o: RxTx_settings.h syn1588_class.h syn1588_class.cpp
$(CC) $(CPPFLAGS) syn1588_class.cpp -o syn1588_class.o

tr03_class.o: RxTx_settings.h tr03_class.h tr03_class.cpp
$(CC) $(CPPFLAGS) tr03_class.cpp -o tr03_class.o

packet_proc_class.o: packet_proc_class.h packet_proc_class.cpp
$(CC) $(CPPFLAGS) packet_proc_class.cpp -o packet_proc_class.o

socket_tools.o: socket_tools.h socket_tools.cpp
$(CC) $(CPPFLAGS) socket_tools.cpp -o socket_tools.o

crc_calc.o: crc_calc.h crc_calc.cpp
$(CC) $(CPPFLAGS) crc_calc.cpp -o crc_calc.o

stdafx.o: stdafx.h stdafx.cpp
$(CC) $(CPPFLAGS) stdafx.cpp -o stdafx.o

transaction_class.o: packet_proc_class.h transaction_class.h   
transaction_class.cpp
$(CC) $(CPPFLAGS) transaction_class.cpp -o transaction_class.o

lpq_api_class.o: lpq_api_class.h lpq_api_class.cpp 
$(CXX) $(CPPFLAGS) $(CXXFLAGS) lpq_api_class.cpp -o lpq_api_class.o

fileIn_class.o: fileIn_class.h fileIn_class.cpp
$(CC) $(CPPFLAGS) fileIn_class.cpp -o fileIn_class.o

vip_Rx_udp.o: vip_Rx_settings.h RxTx_settings.h ds_api_class.h   
syn1588_class.h tr03_class.h pio_class.h lpq_api_class.h 
search_api_class.h PktDriverUDPManager.hpp  vip_Rx_udp.cpp
$(CXX) $(CPPFLAGS) $(CXXFLAGS) vip_Rx_udp.cpp -o vip_Rx_udp.o

vip_Tx_udp.o: vip_Tx_settings.h RxTx_settings.h PktDriverUDPManager.hpp  
vip_Tx_udp.cpp
$(CXX) $(CPPFLAGS) $(CXXFLAGS)vip_Tx_udp.cpp -o vip_Tx_udp.o

parser.o: parser_params.h parser.h parser.cpp
$(CXX) $(CPPFLAGS) $(CXXFLAGS) parser.cpp -o parser.o

IGMPTimerManager.o: IGMPTimerManager.hpp IGMPTimerManager.cpp
$(CXX) $(CPPFLAGS) $(CXXFLAGS) IGMPTimerManager.cpp -o IGMPTimerManager.o

IGMPManager.o: IGMPManager.hpp IGMPManager.cpp
$(CXX) $(CPPFLAGS) $(CXXFLAGS) IGMPManager.cpp -o IGMPManager.o

IGMPNetworkManager.o: IGMPNetworkManager.hpp IGMPNetworkManager.cpp 
$(CXX) $(CPPFLAGS) $(CXXFLAGS) IGMPNetworkManager.cpp -o   
IGMPNetworkManager.o

IGMPHostEvent.o: IGMPHostEvent.hpp IGMPHostEvent.cpp 
$(CXX) $(CPPFLAGS) $(CXXFLAGS) IGMPHostEvent.cpp -o IGMPHostEvent.o

IGMPMulticastHost.o: IGMPMulticastHost.hpp IGMPStateMachine.hpp   
IGMPMulticastHost.cpp
$(CXX) $(CPPFLAGS) $(CXXFLAGS) IGMPMulticastHost.cpp -o 
IGMPMulticastHost.o

StateMachine.o: StateMachine.hpp StateMachine.cpp
$(CXX) $(CPPFLAGS) $(CXXFLAGS) StateMachine.cpp -o StateMachine.o

MessageEvent.o: MessageEvent.hpp MessageEvent.cpp
$(CXX) $(CPPFLAGS) $(CXXFLAGS) MessageEvent.cpp -o MessageEvent.o

IGMPV2StateMachine.o:  IGMPStateMachine.hpp IGMPV2StateMachine.cpp
$(CXX) $(CPPFLAGS) $(CXXFLAGS) IGMPV2StateMachine.cpp -o   
IGMPV2StateMachine.o

IGMPV3StateMachine.o:  IGMPStateMachine.hpp IGMPV3StateMachine.cpp
$(CXX) $(CPPFLAGS) $(CXXFLAGS) IGMPV3StateMachine.cpp -o  
IGMPV3StateMachine.o

IGMPStateMachine.o:  IGMPStateMachine.hpp IGMPStateMachine.cpp
$(CXX) $(CPPFLAGS) $(CXXFLAGS) IGMPStateMachine.cpp -o IGMPStateMachine.o

PktDriverAbstractionLayer.o: PktDriverAbstractionLayer.hpp  
PktDriverAbstractionLayer.cpp
$(CXX) $(CPPFLAGS) $(CXXFLAGS) PktDriverAbstractionLayer.cpp -o  
PktDriverAbstractionLayer.o        

PktDriverUDPManager.o: PktDriverUDPManager.hpp PktDriverUDPManager.cpp
$(CXX) $(CPPFLAGS) $(CXXFLAGS) PktDriverUDPManager.cpp  -o 
PktDriverUDPManager.o  

clean:
rm -rf *.o  pcieman_client

configuration file local.conf is here:

MACHINE ??= 'imx7d-phyboard-zeta-001'
DISTRO ?= 'fsl-imx-x11'
PACKAGE_CLASSES ?= "package_rpm"
EXTRA_IMAGE_FEATURES = "debug-tweaks"
IMAGE_INSTALL_append=" xyzlayer"
IMAGE_INSTALL +="boost"
USER_CLASSES ?= "buildstats image-mklibs phytec-mirrors"
PATCHRESOLVE = "noop"
BB_DISKMON_DIRS = "\
STOPTASKS,${TMPDIR},1G,100K \
STOPTASKS,${DL_DIR},1G,100K \
STOPTASKS,${SSTATE_DIR},1G,100K \
STOPTASKS,/tmp,100M,100K \
ABORT,${TMPDIR},100M,1K \
ABORT,${DL_DIR},100M,1K \
ABORT,${SSTATE_DIR},100M,1K \
ABORT,/tmp,10M,1K"
PACKAGECONFIG_append_pn-qemu-native = " sdl"
PACKAGECONFIG_append_pn-nativesdk-qemu = " sdl"
ASSUME_PROVIDED += "libsdl-native"
CONF_VERSION = "1"

BB_NUMBER_THREADS = "8"
PARALLEL_MAKE = "-j 4"

DL_DIR ?= "/opt/PHYTEC_BSPs/yocto_dl"
ACCEPT_FSL_EULA = "1"

bblayer file bblayers.conf is here:

# LAYER_CONF_VERSION is increased each time build/conf/bblayers.conf
# changes incompatibly
POKY_BBLAYERS_CONF_VERSION = "2"

 BBPATH = "${TOPDIR}"
BSPDIR := "${@os.path.abspath(os.path.dirname(d.getVar('FILE', True)) + 
'/../..')}"
BBFILES ?= ""

BBLAYERS = " \
${BSPDIR}/sources/poky/meta \
${BSPDIR}/sources/poky/meta-poky \
\
${BSPDIR}/sources/meta-openembedded/meta-oe \
${BSPDIR}/sources/meta-openembedded/meta-multimedia \
\
${BSPDIR}/sources/meta-fsl-arm \
${BSPDIR}/sources/meta-fsl-arm-extra \
${BSPDIR}/sources/meta-fsl-demos \
${BSPDIR}/sources/meta-fsl-bsp-release/imx/meta-bsp \
${BSPDIR}/sources/meta-fsl-bsp-release/imx/meta-sdk \
\
${BSPDIR}/sources/meta-browser \
${BSPDIR}/sources/meta-openembedded/meta-gnome \
${BSPDIR}/sources/meta-openembedded/meta-networking \
${BSPDIR}/sources/meta-openembedded/meta-python \
${BSPDIR}/sources/meta-openembedded/meta-filesystems \
${BSPDIR}/sources/meta-qt5 \
\
${BSPDIR}/sources/meta-phytec \
${BSPDIR}/sources/meta-phytec/meta-phytec-fsl \
    ${BSPDIR}/sources/meta-xyzlayer \
    ${BSPDIR}/sources/meta-testlayer \
  "
Newbie_SW
  • 51
  • 1
  • 6
  • Not aware bb file , is PktDriverAbstractionLayer.hpp is present in WORKDIR – Varun Feb 15 '18 at 09:15
  • yes it is present. – Newbie_SW Feb 15 '18 at 10:31
  • 1
    post your recipe then its easy to solve. – yoctotutor.com Feb 20 '18 at 07:33
  • It clearly states it's unable to find PktDriverAbstractionLayer.hpp, to give people to possibility to help please add the used recipe to the question. – g0hl1n Feb 20 '18 at 08:54
  • @Sivanageswararao.Vadalasetti, above I have updated with recipe. After editing several <> to "" of header file that error is gone but have another error: /usr/bin/ld: pcieman_client.o: Relocations in generic ELF (EM: 40) ..... pcieman_client.o: error adding symbols: File in wrong format collect2: error: ld returned 1 exit status make: *** [pcieman_client] Error 1" Is that cross compiler error? The same source files with given make file compiled error free directly in Ubuntu/Centos instead of yocto platform. Do you have any suggestion? – Newbie_SW Feb 20 '18 at 10:39
  • Why do you mix CXX and CC in the Makefile when CC=g++? Furthermore you should use CC ?= g++; CPPFLAGS+=xxx & LDFLAGS+=xxxx; see: https://stackoverflow.com/questions/448910 – g0hl1n Feb 20 '18 at 12:20
  • @g0hl1n After editing makefile CC?=g++ CPPFLAGS+=-c -pthread -std=c++11 CXXFLAGS += -g -c -Wall -Wextra -pthread -std=c++0x LFLAGS+=-Bsymbolic I end up with new error: collect2: error: ld returned 1 exit status make: *** [pcieman_client] Error 1 with thousands of " undefined reference to " `std::__cxx11::basic_string, std::allocator >::compare(char const*) const', `std::cout', `std::ios_base::Init::Init()', `std::cin', `std::ctype::_M_widen_init() const', .................. I think there need to add something more for yocto platform??? – Newbie_SW Feb 20 '18 at 14:24
  • are you using c99 or c++11 if c++11 then add build/conf/local.conf file IMAGE_INSTALL +="boost" which provides the c++11 support in yocto – yoctotutor.com Feb 21 '18 at 03:51
  • @Siva.V I use c++11 as mentioned in makefile flag parameter. Adding this IMAGE_INSTALL +="boost" in local.conf have no effect. see updated info above. Moreover gcc version 5.4.1 20160904 (Ubuntu 5.4.1-2ubuntu1~14.04). In original makefile written by other guy which compiled successfully in ubuntu has CPPFLAGS=-c -pthread -std=c++11 -Iinclude -I../udpman_client -I../../sw_team_baseline -I../include -I../../pcie_manager I also try with include but have also no impact. Any suggestion? – Newbie_SW Feb 21 '18 at 08:14

1 Answers1

1

What I see missing in the arm-poky-linux-gnueabi-g++ command line is the "-I" option for include path. Since the bitbake environment variables override the Makefile variables, it maybe required to explicitly specify the include paths using the following (in your recipe file before the do_compile() task):

TARGET_CFLAGS += " -I${S}"

Assuming that the header files are in the same folder as the source files.

VeRaj
  • 61
  • 1
  • 2