Makefile - проблемы кросс-компиляции - PullRequest
0 голосов
/ 29 ноября 2018

Я работаю с BeagleBoneBlack и создаю драйвер устройства и простой tcp-сервер для отправки данных клиенту.Драйвер является модулем ядра Linux, и сервер работает на beaglebone, но клиент работает на ПК.

Я кросс-компилировал драйвер на ПК, а затем передал driver.ko, server_tcp.c и server_tcp.h beglebone, чтобы позже скомпилировать сервер в beaglebone с помощью gcc.Теперь я пытаюсь скомпилировать ядро ​​и сервер на ПК, а затем только передать скомпилированные файлы, но при запуске сервера я получаю:

bash: ./server_tcp: не могу выполнить двоичный файл:Ошибка формата exec

Мой make-файл выглядит так:

obj-m := ./driver/driver.o ./server/server_tcp.o
KERNEL_DIR := /home/user/kernel_beagle/
BEAGLEBONE_IP := 192.168.7.2
ARCH := arm
CROSS_COMPILE := arm-linux-gnueabihf-

MAKEARCH := $(MAKE) ARCH=$(ARCH) CROSS_COMPILE=$(CROSS_COMPILE)

.PHONY : help
help:
    @echo ''
    @echo '  make all:      Compile and transfer'
    @echo '  make clean:    Delete files'
    @echo ''

.PHONY : all
all: 
    @echo 'Compile the driver'
    $(MAKEARCH) -C $(KERNEL_DIR) M=$(PWD) modules

    @echo 'Compile the client'
    gcc ./client/client.c -o ./client/client -pthread -lrt

    @echo 'Transfer files'
    scp ./server/server_tcp debian@$(BEAGLEBONE_IP):/home/debian

.PHONY: clean
clean:
    @echo 'Deleting files'
    $(MAKEARCH) -C $(KERNEL_DIR) M=$(PWD) clean
    rm ./client/client

Есть идеи?Спасибо.

...