LINUX.ORG.RU
решено ФорумAdmin

Компиляция своих пакетов на С для OpenWrt

 , ,


0

1

Здравствуйте! Подскажите, пожалуйста, такая проблема, сам уже не в силах разобраться. Не компилируется файл на С для Openwrt. Пробовал на Убунту 12, 14, 18 и на всякий пожарный на CentOS 7. Качаю исходники Openwrt, запускаю make menuconfig, мой пакет видит. Пытаюсь компилировать. В конце вылетает ошибка

cp: cannot stat ‘/home/dmitry/openwrt/staging_dir/toolchain-mips_24kc_gcc-5.4.0_musl-1.1.16/lib/libgcc_s.so.*’: No such file or directory make[2]: *** [/home/dmitry/openwrt/bin/targets/ar71xx/generic/packages/libgcc_unknown-1_mips_24kc.ipk] Error 1 make[2]: Leaving directory /home/dmitry/openwrt/package/libs/toolchain' make[1]: *** [package/libs/toolchain/compile] Error 2 make[1]: Leaving directory/home/dmitry/openwrt’ make: *** [package/program1/compile] Error 2

Что с этим можно сделать? Или кто-то подскажет как скомпилировать программу на С для Openwrt? Пробовал через гцц на виртуалке, но когда с виртуалки закидываю в роутер Микротик, у него syntax error, я так понимаю, платформа не подходит?

Для чего, собственно, это нужно, что б не было скриптов .sh. Пробовал через shc, он из .sh делает .с, но у openwrt syntax error все равно, хотя убунту .с запускает.



Последнее исправление: try20 (всего исправлений: 3)

ЯННП. Что значит «скомпилировать из С в Openwrt?» Это всё равно, что «скомпилировать из Pascal в RedHat», то есть, белиберда какая-то. И чем тебе помешали .sh, что ты от них избавиться хочешь?

XMs ★★★★★
()

ты бы makefile-ы хоть показал

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

как скомпилировать программу на С для Openwrt?

Так же, как и для любого другого дистрибутива. Короче, показывай Makefile, как уже выше писали

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

Сейчас ошибка:

cp: cannot stat ‘/home/dmitry/archive/staging_dir/toolchain-mips_34kc_gcc-4.8-linaro_uClibc-0.9.33.2/lib/libuClibc-*.so’: No such file or directory cp: cannot stat ‘/home/dmitry/archive/staging_dir/toolchain-mips_34kc_gcc-4.8-linaro_uClibc-0.9.33.2/lib/libcrypt-*.so’: No such file or directory cp: cannot stat ‘/home/dmitry/archive/staging_dir/toolchain-mips_34kc_gcc-4.8-linaro_uClibc-0.9.33.2/lib/libm-*.so’: No such file or directory make[2]: *** [/home/dmitry/archive/build_dir/target-mips_34kc_uClibc-0.9.33.2/toolchain/.built] Error 1 make[2]: Leaving directory /home/dmitry/archive/package/libs/toolchain' make[1]: *** [package/libs/toolchain/compile] Error 2 make[1]: Leaving directory/home/dmitry/archive’ make: *** [package/program1/compile] Error 2

try20
() автор топика
Ответ на: комментарий от XMs

Makefile

include $(TOPDIR)/rules.mk

PKG_NAME:=program1
PKG_VERSION:=1.0
PKG_RELEASE:=1

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

SOURCE_DIR:=/home/dmitry/archive/package/program1/src/program1.c

include $(INCLUDE_DIR)/package.mk
define Package/program1
SECTION:=utils
CATEGORY:=Utilities
TITLE:=program1 — Test program
endef

define Package/program1/description
program1 — Test program
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)/program1.o $(PKG_BUILD_DIR)/program1.c
$(TARGET_CC) $(TARGET_LDFLAGS) -o $(PKG_BUILD_DIR)/program1 $(PKG_BUILD_DIR)/program1.o
endef

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

$(eval $(call BuildPackage,program1))

try20
() автор топика
Ответ на: комментарий от try20

Я, конечно, Make плохо знаю, но вот это выглядит довольно странно:

SOURCE_DIR:=/home/dmitry/archive/package/program1/src/program1.c

Ты директорией назначаешь сишник. Может, sergej, который тоже хотел Makefile, меня поправит, но мне кажется, что это неправильно.

Далее, оно у тебя ругается на cp:

cp: cannot stat ‘/home/dmitry/openwrt/staging_dir/toolchain-mips_24kc_gcc-5.4.0_musl-1.1.16/lib/libgcc_s.so.*’: No such file or directory

Я не вижу, где бы оно явно дёргалось в твоём мейкфайле, поэтому попробуй убедиться, что твой модуль не пытается собраться до того, как соберётся тулчейн

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

Да, исправил на SOURCE_DIR:=/home/dmitry/archive/package/program1/src

Вот полный вывод по команде make package/program1/compile V=s

Collecting package info: done
make[1]: Entering directory /home/dmitry/archive' make[2]: Entering directory/home/dmitry/archive/package/libs/toolchain’
cp -fpR /home/dmitry/archive/staging_dir/toolchain-mips_34kc_gcc-4.8-linaro_uClibc-0.9.33.2/lib/libuClibc-.so /home/dmitry/archive/staging_dir/toolchain-mips_34kc_gcc-4.8-linaro_uClibc-0.9.33.2/lib/libcrypt-.so /home/dmitry/archive/staging_dir/toolchain-mips_34kc_gcc-4.8-linaro_uClibc-0.9.33.2/lib/libm-.so /home/dmitry/archive/staging_dir/toolchain-mips_34kc_gcc-4.8-linaro_uClibc-0.9.33.2/lib/libpthread-.so /home/dmitry/archive/build_dir/target-mips_34kc_uClibc-0.9.33.2/toolchain/
cp: cannot stat ‘/home/dmitry/archive/staging_dir/toolchain-mips_34kc_gcc-4.8-linaro_uClibc-0.9.33.2/lib/libuClibc-*.so’: No such file or directory
cp: cannot stat ‘/home/dmitry/archive/staging_dir/toolchain-mips_34kc_gcc-4.8-linaro_uClibc-0.9.33.2/lib/libcrypt-*.so’: No such file or directory
cp: cannot stat ‘/home/dmitry/archive/staging_dir/toolchain-mips_34kc_gcc-4.8-linaro_uClibc-0.9.33.2/lib/libm-*.so’: No such file or directory
make[2]: *** [/home/dmitry/archive/build_dir/target-mips_34kc_uClibc-0.9.33.2/toolchain/.built] Error 1
make[2]: Leaving directory /home/dmitry/archive/package/libs/toolchain' make[1]: *** [package/libs/toolchain/compile] Error 2 make[1]: Leaving directory/home/dmitry/archive’
make: *** [package/program1/compile] Error 2

try20
() автор топика
Последнее исправление: try20 (всего исправлений: 1)
Ответ на: комментарий от XMs

ОК. Сначала собрал make tools/install. Собралось
Собираю

/home/dmitry/archive# make toolchain/install
make[1] toolchain/install
make[2] -C toolchain/gdb prepare
make[2] -C toolchain/gdb compile
make[2] -C toolchain/gdb install
make[2] -C toolchain/binutils prepare
make[2] -C toolchain/binutils compile
make[2] -C toolchain/binutils install
make[2] -C toolchain/gcc/minimal prepare
make[2] -C toolchain/gcc/minimal compile
make[2] -C toolchain/gcc/minimal install
make[2] -C toolchain/kernel-headers prepare
make -r toolchain/install: build failed. Please re-run make with V=s to see what’s going on
make: *** [toolchain/install] Error 1

С ключом V=s вывод (весь писать не буду, там он коннектится к зеркалам и ничего не находит.

Download failed.
No more mirrors to try - giving up.
make[2]: *** [/home/dmitry/archive/dl/linux-3.10.49.tar.xz] Error 2
make[2]: Leaving directory /home/dmitry/archive/toolchain/kernel-headers' make[1]: *** [toolchain/kernel-headers/prepare] Error 2 make[1]: Leaving directory/home/dmitry/archive’
make: *** [toolchain/install] Error 2

try20
() автор топика
Последнее исправление: try20 (всего исправлений: 1)
Ответ на: комментарий от try20

Что-то не может скачать — нет зеркал. Либо у тебя набор сорцов старый, и нужно взять посвежее, либо имеющиеся зеркала с того компа недоступны, и разбираться стоит с этим

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

Это потому что Openwrt 14 версии. Сейчас скачаю 17, попробую.

try20
() автор топика
Ответ на: комментарий от XMs

В чем, собственно, была проблема. На других версиях openwrt, кроме 14, у меня не собирался tools. Загрузил исходники 17 версии, тулс не собирается, выдает ошибку. Внимательно изучив вывод по V=s я понял, что нельзя собирать из-под рут. Присвоив права на каталог openwrt chown -R user:user /home/user/openwrt тулс и тулчейн собрался без рут, все заработало, пакеты компилируются. Простите, если вопросы были глупые, я с Линуксом начал знакомиться две недели назад.

try20
() автор топика
Последнее исправление: try20 (всего исправлений: 1)
Ответ на: комментарий от try20

А может ещё кто-то сможет подсказать, на счёт следующего:. Пишу скрипт

#!/bin/sh
echo «it’s work»

Транслирую его через shc в .с, дальше этот файл .с компилирую и получаю пакет .ipk

Устанавливаю пакет на роутере, устанавливается, все норм. Запускаю, вижу в терминале вывод it’s work, тут тоже все хорошо.

Но теперь пишу скрипт

#!/bin/sh
airodump-ng wlan0

Это например. Присваиваю права на выполнение, скрипт работает, запускает airodump-ng.
Но если я этот скрипт транслирую в .с и комплирую, то после установки на роутер при запуске программа пишет applet not found. В чем может быть проблема?

try20
() автор топика
Ответ на: комментарий от try20

Для этого лучше создай отдельный тред, а этот пометь, как решённый. И в новом треде сразу приложи код, который ты получаешь после транслирования

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