Я работаю с 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
Есть идеи?Спасибо.