Как скомпилировать файлы C ++, используя Makefile - PullRequest
0 голосов
/ 21 января 2020

Я пытаюсь скомпилировать make-файл, используя команду make и рецепт bitbake, оба показывают разные ошибки. Важная часть Makedfile показана ниже

CC = gcc
VERSION = 0.0.1
#CFLAGS =  -Wall -g -O2 -DRUN_AS_DAEMON -DFP_SIMULATOR -Dsplitmux_BOARD
CFLAGS =  -Wall -g -O2 -DRUN_AS_DAEMON -Dsplitmux_BOARD
CXXFLAGS = -Wall -O2
prefix = ${DESTDIR}/usr
includedir = $(prefix)/include
libdir = ${prefix}/lib
bindir = ${prefix}/bin
sbindir = ${prefix}/sbin
all:  Splitmux4K
LDFLAGS         = -L.
INSTALL = /usr/bin/install

SPLITMUX_SRCS = VideoMemory.cxx scalarSetRegisterT.cpp Receiver_new.cxx Transmitter.cxx Serializer.cxx VideoInput.cxx FpgaControl.cxx TempController.cxx DdcControl.cxx OSDController.cxx Monitor.cxx
SPLITMUX_OBJS = VideoMemory.o scalarSetRegisterT.o Receiver_new.o Transmitter.o Serializer.o VideoInput.o FpgaControl.o TempController.o DdcControl.o OSDController.o Monitor.o at91gpio.o

Splitmux4K: Splitmux4K.cxx $(SPLITMUX_SRCS) libsplitmuxdb.so libsplitmux.so libnetwork.so at91gpio.c libi2cbus.a libosdmenu.a
        $(CXX) $(CXXFLAGS) -c Splitmux4K.cxx -o Splitmux4K.o
        $(CXX) $(CXXFLAGS) -c VideoMemory.cxx -o VideoMemory.o
        $(CXX) $(CXXFLAGS) -c scalarSetRegisterT.cpp -o scalarSetRegisterT.o
        $(CXX) $(CXXFLAGS) -c Receiver_new.cxx -o Receiver_new.o
        $(CXX) $(CXXFLAGS) -c Transmitter.cxx -o Transmitter.o
        $(CXX) $(CXXFLAGS) -c Serializer.cxx -o Serializer.o
        $(CXX) $(CXXFLAGS) -c OSDController.cxx -o OSDController.o
        $(CXX) $(CXXFLAGS) -c FpgaControl.cxx -o FpgaControl.o
        $(CXX) $(CXXFLAGS) -c VideoInput.cxx -o VideoInput.o  
        $(CXX) $(CXXFLAGS) -c TempController.cxx -o TempController.o
        $(CXX) $(CXXFLAGS) -c DdcControl.cxx -o DdcControl.o
        $(CXX) $(CXXFLAGS) -c Monitor.cxx -o Monitor.o
        $(CXX) Splitmux4K.o $(SPLITMUX_OBJS) -o Splitmux4K  -Wall -static -L. -Wl,-Bdynamic -lnetwork -lsplitmuxdb -lsplitmux -lconfigxml -lmxml -lpthread -lrt -lssl -Wl,-Bstatic -li2cbus -losdmenu 

1) при использовании команды make

$make

произошла ошибка:

g++ Splitmux4K.o VideoMemory.o scalarSetRegisterT.o Receiver_new.o Transmitter.o Serializer.o VideoInput.o FpgaControl.o TempController.o DdcControl.o OSDController.o Monitor.o at91gpio.o  -o Splitmux4K  -Wall -static -L. -Wl,-Bdynamic -lnetwork -lsplitmuxdb -lsplitmux -lconfigxml -lmxml -lpthread -lrt -lssl -Wl,-Bstatic -li2cbus -losdmenu 
/usr/bin/ld: /usr/lib/gcc/x86_64-linux-gnu/7/libstdc++.a(eh_globals.o): undefined reference to symbol '__tls_get_addr@@GLIBC_2.3'
//lib/x86_64-linux-gnu/ld-linux-x86-64.so.2: error adding symbols: DSO missing from command line
collect2: error: ld returned 1 exit status
Makefile:167: recipe for target 'Splitmux4K' failed
make: *** [Splitmux4K] Error 1

2) рецепт битового теста

файл scalar.bb

SUMMARY = "bitbake-layers recipe"
DESCRIPTION = "Recipe created by bitbake-layers"
LICENSE = "MIT"
LIC_FILES_CHKSUM = "file://${COMMON_LICENSE_DIR}/MIT;md5=0835ade698e0bcf8506ecda2f7b4f302"

SRC_URI = "file://Makefile"

S = "${WORKDIR}"

do_compile() {
        oe_runmake all 'CC=${CC}'
}

do_install() {
         oe_runmake install 'DESTDIR=${D}'
}

, когда я использую скалярный скаляр, он показывает ошибку

Log data follows:
| DEBUG: Executing shell function do_compile
| NOTE: make -j 6 all CC=arm-poky-linux-gnueabi-gcc  -mthumb -mfpu=neon-vfpv4 -mfloat-abi=hard -mcpu=cortex-a5 -fstack-protector-strong  -D_FORTIFY_SOURCE=2 -Wformat -Wformat-security -Werror=format-security --sysroot=/home/user/my_dir/poky/build-microchip/tmp/work/cortexa5t2hf-neon-vfpv4-poky-linux-gnueabi/scalar/1.0-r0/recipe-sysroot
| make: *** No rule to make target 'Splitmux4K.cxx', needed by 'Splitmux4K'.  Stop.
| ERROR: oe_runmake failed
| WARNING: exit code 1 from a shell command.
| ERROR: Function failed: do_compile (log file is located at /home/user/my_dir/poky/build-microchip/tmp/work/cortexa5t2hf-neon-vfpv4-poky-linux-gnueabi/scalar/1.0-r0/temp/log.do_compile.7440)

, когда я по отдельности компилирую Splitmux4K.cxx или любой связанный с ним файл, который показывает следующую ошибку типа

undefined reference to `VideoMemory::GetOutHorzResolution() 
undefined reference to `VideoMemory::GetInputMemoryOffset(int)
undefined reference to `Receiver::GetVertWidth()

как @ LetoThe2nd сказал, что я не пытаюсь извлекать файлы вручную. Пожалуйста, помогите мне решить ошибку

...