LINUX.ORG.RU

Про Makefile Openwrt

 


0

1

Здравствуйте.

Про кросскомпиляцию отдельных пакетов для Openwrt.

Прошу помощи.

Для Openwrt, для отдельного пакета (например homestd.c) собираю вот с таким мейкфалом:

include $(TOPDIR)/rules.mk

PKG_NAME:=homestd
PKG_VERSION:=1
PKG_RELEASE:=1

PKG_BUILD_DIR:= $(BUILD_DIR)/$(PKG_NAME)

include $(INCLUDE_DIR)/package.mk


define Package/homestd
	SECTION:=utils
	CATEGORY:=Utilities
	TITLE:=homestd - Homestd utility
	DEPENDS:=+libpthread
endef

define Package/homestd/description
    homestd - Homestd utility
endef

define Build/Prepare
	mkdir -p $(PKG_BUILD_DIR)
	$(CP) ./src/* $(PKG_BUILD_DIR)/
endef

define Build/Compile
	$(TARGET_CC)  $(TARGET_CFLAGS) -c  -o $(PKG_BUILD_DIR)/homestd.o $(PKG_BUILD_DIR)/homestd.c 
	$(TARGET_CC) $(TARGET_LDFLAGS) -o  $(PKG_BUILD_DIR)/homestd $(PKG_BUILD_DIR)/homestd.o -lpthread
endef

define Package/homestd/install
	$(INSTALL_DIR) $(1)/
	$(INSTALL_BIN) $(PKG_BUILD_DIR)/homestd $(1)/
endef

$(eval $(call BuildPackage,homestd))

Сейчас хочу скомпилить некую программу для Openwrt. Программа (для некой девайсины от Мастеркита) поставляется с файлами hidapi.h, hid-libusb.c, mp751.c.

И с файлом install.sh

#!/bin/bash
cd
sudo apt-get install g++ libusb-1.0-0-dev
cd /home/pi/mp751
sudo make clean
sudo make
sudo rm mp751.o hid-libusb.o
И в придачу даётся Makefile для ubuntu/debian вот с таким содержанием:

all: mp751

mp751: mp751.o hid-libusb.o
	gcc mp751.o hid-libusb.o -o mp751 -lusb-1.0 -lrt -lpthread

mp751.o: mp751.c
	gcc -c mp751.c
	
hid-libusb.o: hid-libusb.c 
	gcc -I/usr/include/libusb-1.0 -I. -c hid-libusb.c

clean:
	rm -f hid-libusb.o mp751.o mp751

.PHONY: clean

Объясните пожалуйста или покажите пример, как совместить эти два мейкфайла? Или точнее превратить этот мейкфайл в мейкфайл для OpenWrt?

Спасибо.


Тут написано, что должно быть в Makefile, в описании: https://wiki.openwrt.org/ru/doc/devel/packages

Компиляцию делайте через ″$(TARGET_CC) $(TARGET_CFLAGS)″, в вашем Makefile две команды компиляции:

$(TARGET_CC)  $(TARGET_CFLAGS) -c -o $(PKG_BUILD_DIR)/mp751.o $(PKG_BUILD_DIR)/mp751.c
$(TARGET_CC)  $(TARGET_CFLAGS) -c -o $(PKG_BUILD_DIR)/hid-libusb.o $(PKG_BUILD_DIR)/hid-libusb.c -I/usr/include/libusb-1.0 -I$(PKG_BUILD_DIR)

Линковку

gcc mp751.o hid-libusb.o -o mp751 -lusb-1.0 -lrt -lpthread
через ″$(TARGET_CC) $(TARGET_LDFLAGS)″, указываете там полные пути к файлам через ″$(PKG_BUILD_DIR)/″.

mky ★★★★★
()
Ответ на: комментарий от stD

Правда ничего не получается, Вы можете целиком макефиле написать, а то я не разберусь никогда. Ещё непонятно, куда hidapi.h вписывать.

stD
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.