guys. I'm newbie to this PipeCNN. When i want to run the makefile, it showed 'skipping incompatible for a binary file when searching for binary file.
g++ ./host/main.o ../common/ocl_util.o ../common/timer.o -o run.exe -L/home/imuser/intelFPGA/18.1/hld/board/terasic/de1_soc/arm32/lib -L/home/imuser/intelFPGA/18.1/hld/host/arm32/lib -L/home/imuser/intelFPGA/18.1/hld/host/linux64/lib -Wl,--no-as-needed -lalteracl -lintel_soc32_mmd -lstdc++ -lelf /usr/bin/ld: skipping incompatible /home/imuser/intelFPGA/18.1/hld/host/arm32/lib/libalteracl.so when searching for -lalteracl/usr/bin/ld: skipping incompatible /home/imuser/intelFPGA/18.1/hld/board/terasic/de1_soc/arm32/lib/libintel_soc32_mmd.so when searching for -lintel_soc32_mmd/usr/bin/ld: cannot find -lintel_soc32_mmd/usr/bin/ld: skipping incompatible /home/imuser/intelFPGA/18.1/hld/host/arm32/lib/libelf.so when searching for -lelfcollect2: error: ld returned 1 exit statusMakefile:168: recipe for target 'run.exe' failedmake: *** [run.exe] Error 1
location of error binary code can found in another folder
libalteracl.so --> /intelFPGA/18.1/hld/host/linux64/liblibintel_soc32_mmd.so --> 32bit filelibelf.so --> /intelFPGA/18.1/hld/host/linux64/lib
check pc determine and set the build and host architecture for package building
dpkg --print-architecture --> amd64dpkg --print-foreign-architectures --> i386
Makefile#
#set source and target for host
HOST_EXE = run.exeHOST_SRCS = ./host/main.cpp ../common/ocl_util.cpp ../common/timer.cppHOST_OBJS = $(HOST_SRCS:%.cpp=%.o)HOST_INCS = ../commonHOST_DEBUG =#if you are loading images from OpenCV interfaces please set to 1USE_OPENCV = 1#set source and target for device#supported vendors are xilinx, altera, amdVENDOR = altera#select the host archecture x86|arm32PLATFORM = x86#optinal flows are hw|hw_emu|sw_emuFLOW = sw_emuKERNEL_SRCS = ./device/conv_pipe.clKERNEL_NAME = convKERNEL_DEFS =KERNEL_INCS = KERNEL_DEBUG = 1#additional pragma for xilinxCU_NUM = 1MAX_MEM_PORT = 0MEM_PORT_SIZE = 512#select the device binary nameifeq ($(VENDOR),xilinx)DEV_EXE = $(KERNEL_NAME).xclbinelse ifeq ($(VENDOR),altera)DEV_EXE = $(KERNEL_NAME).aocxelse ifeq ($(VENDOR),amd)DEV_EXE =endif#host compiler optionsCROSS-COMPILE = arm-linux-gnueabihf-ifeq ($(PLATFORM),x86)CXX := g++ifeq ($(USE_OPENCV),1)#add your OpenCV PATH hereOCV_INCLUDES = -I/usr/local/include/OCV_LIBDIRS = -L/usr/local/lib OCV_LIBS = -lopencv_core -lopencv_imgproc -lopencv_highgui -lopencv_mlendifelse ifeq ($(PLATFORM),arm32)CXX := $(CROSS-COMPILE)g++ifeq ($(USE_OPENCV),1)#add your cross compile OpenCV PATH hereOCV_INCLUDES = -I/usr/local/opencv-arm/include/OCV_LIBDIRS = -L/usr/local/opencv-arm/lib OCV_LIBS = -lopencv_core -lopencv_imgproc -lopencv_highgui -lopencv_mlendifendif#select whether use OpenCV or notifeq ($(USE_OPENCV),1)CXXFLAGS = -g -Wall -std=c++11 -DUSE_OPENCVelseCXXFLAGS = -g -Wall -std=c++11endif#select whether manually launch free-run kernelsifeq ($(FLOW),sw_emu)CXXFLAGS += -DSW_EMUendififeq ($(VENDOR),xilinx)COMP_CONFIG = -I$(XILINX_SDX)/runtime/include/1_2 -I$(HOST_INCS) -DFPGA_DEVICE -DXILINXLINK_CONFIG = -L$(XILINX_SDX)/runtime/lib/x86_64 -lxilinxopenclelse ifeq ($(VENDOR),altera)COMP_CONFIG = $(shell aocl compile-config) -I$(HOST_INCS) -DFPGA_DEVICELINK_CONFIG = $(shell aocl link-config)else ifeq ($(VENDOR),amd)DEV_EXE =endif#opencl compiler options#xilinxifeq ($(VENDOR),xilinx)OCC = $(XILINX_SDX)/bin/xocc -DXILINXOCCFLAGS = --platform xilinx:kcu1500:4ddr-xpr:4.0 -t $(FLOW) -O2 --kernel_frequency 200 --save-temps --report system \--memory_port_data_width memWrite:32 \--memory_port_data_width memRead:512 \--nk memWrite:1 --nk coreConv:1 --nk lrn:1 --nk maxPool:1 --nk memRead:1 \#--xp misc:map_connect=add.kernel.memRead_1.M_AXI_GMEM0.core.OCL_REGION_0.M00_AXI\#--xp misc:map_connect=add.kernel.memRead_1.M_AXI_GMEM1.core.OCL_REGION_0.M01_AXI\#--xp misc:map_connect=add.kernel.memRead_1.M_AXI_GMEM2.core.OCL_REGION_0.M02_AXI\#--xp misc:map_connect=add.kernel.memWrite_1.M_AXI_GMEM0.core.OCL_REGION_0.M00_AXI\#--xp misc:map_connect=add.kernel.lrn_1.M_AXI_GMEM.core.OCL_REGION_0.M00_AXI#--max_memory_ports lrn\#--xp misc:map_connect=add.kernel.lrn_1.M_AXI_GMEM0.core.OCL_REGION_0.M00_AXI\#--xp misc:map_connect=add.kernel.lrn_1.M_AXI_GMEM1.core.OCL_REGION_0.M01_AXI#memory optimization for xilinxifeq ($(MAX_MEM_PORT), 1)OCCFLAGS += --max_memory_ports allOCCFLAGS += --memory_port_data_width all:$(MEM_PORT_SIZE)endif#alteraelse ifeq ($(VENDOR),altera)OCC = aocifeq ($(FLOW),sw_emu)OCCFLAGS = -v --report -march=emulator -I device/RTL -L device/RTL -l rtl_lib.aoclib else ifeq ($(FLOW),hw)OCCFLAGS = -v --report --profile -I device/RTL -L device/RTL -l rtl_lib.aoclib endif#amdelse ifeq ($(VENDOR),amd)OCC =OCCFLAGS =endif#debug optionifeq ($(KERNEL_DEBUG),1) OCCFLAGS += -gendif.PHONY: allall: host fpga.PHONY: hosthost: $(HOST_EXE).PHONY: fpgafpga: $(DEV_EXE)$(HOST_EXE): $(HOST_OBJS) $(CXX) $(OCV_LIBDIRS) $(OCV_INCLUDES) $(HOST_OBJS) -o $@ $(LINK_CONFIG) $(OCV_LIBS)%.o: %.cpp $(CXX) $(OCV_LIBDIRS) $(OCV_INCLUDES) $(CXXFLAGS) -c $< -o $@ $(COMP_CONFIG) $(OCV_LIBS)$(DEV_EXE): $(KERNEL_SRCS) $(OCC) $(OCCFLAGS) $< -o $@.PHONY: cleanclean: rm -rf *.xclbin *.rpt *.xtxt *.json *.dir *.aocx *.aoco *.exe xocc* sdaccel* ./device/*.ll ./host/*.o ../common/*.o *.log *.jou *.mon
Question:May i know how to solve this problem? Since I had tried to using g++-multilib
and g++-arm-linux-gnueabi
, is still cannot work.What i know is that the bindary code is 32bit but then my Ubuntu is 64 bit.My CXX is g++
when i had changed CXX to -m32
, it can compile but the run.exe does not create.