Я пытаюсь скомпилировать простую программу helloworld для OpenWrt (используя систему сборки, ветка 17.01.6). Я использовал два урока: урок helloworld на официальном сайте и Эрика Бишопа , часть 2 для C ++.
Но во время компиляции helloworld-пакета я получил ошибку: Package helloworld is missing dependencies for the following libraries:
libc.so.6
Структура файлов:
.
├ - openwrt_17_01
├ - исходный # исходный каталог, система сборки
├ - проект helloworld #helloworld
| └ - ЦСИ
| ├ - helloworld.cpp
| Make - Makefile # C ++ проект makefile
└ - mypackages
└ - примеры
└ - HelloWorld
└ - Makefile #package makefile
openwrt_17_01 / HelloWorld / SRC / helloworld.cpp:
#include "stdio.h"
int main()
{
printf("Hello, world! (C++)\n\n");
return 0;
}
openwrt_17_01 / HelloWorld / SRC / Makefile:
helloworld: helloworld.o
$(CXX) $(LDFLAGS) helloworld.o -o helloworld $(LIBS)
helloworld.o: helloworld.cpp
$(CXX) $(CXXFLAGS) -c helloworld.cpp
clean:
rm *.o helloworld
mypackages / примеры / HelloWorld / Makefile:
include $(TOPDIR)/rules.mk
PKG_NAME:=helloworld
PKG_VERSION:=1.0
PKG_RELEASE:=1
SOURCE_DIR:=/home/mzhi/proj_src/openwrt_17_01/helloworld
PKG_BUILD_DIR:=$(BUILD_DIR)/$(PKG_NAME)
include $(INCLUDE_DIR)/package.mk
define Package/helloworld
SECTION:=examples
DEPENDS:= +libstdcpp +libc
CATEGORY:=Examples
TITLE:=Hello, World!
endef
define Package/helloworld/description
A simple "Hello, world!" -application.
endef
define Build/Prepare
mkdir -p $(PKG_BUILD_DIR)
$(CP) $(SOURCE_DIR)/src/* $(PKG_BUILD_DIR)/
endef
define Build/Compile
$(MAKE) -C $(PKG_BUILD_DIR) \
LIBS="-nodefaultlibs -lgcc -lc -luClibc++" \
LDFLAGS="$(EXTRA_LDFLAGS)" \
CXXFLAGS="$(TARGET_CFLAGS) $(EXTRA_CPPFLAGS) -nostdinc++" \
$(TARGET_CONFIGURE_OPTS) \
CROSS="$(TARGET_CROSS)" \
ARCH="$(ARCH)" \
$(1);
endef
define Package/helloworld/install
$(INSTALL_DIR) $(1)/usr/bin
$(INSTALL_BIN) $(PKG_BUILD_DIR)/helloworld $(1)/usr/bin
endef
$(eval $(call BuildPackage,helloworld))
Полный вывод компиляции (make package / helloworld / compile -j1 V = s):
make[1]: Entering directory
'/home/mzhi/proj_src/openwrt_17_01/openwrt'
make[2]: Entering directory
'/home/mzhi/proj_src/openwrt_17_01/openwrt/package/libs/toolchain'
if [ -f /home/mzhi/proj_src/openwrt_17_01/openwrt/staging_dir/target- mipsel_24kc_musl-1.1.16/pkginfo/toolchain.default.install.clean ]; then rm -f /home/mzhi/proj_src/openwrt_17_01/openwrt/staging_dir/target-mipsel_24kc_musl-1.1.16/pkginfo/toolchain.default.install /home/mzhi/proj_src/openwrt_17_01/openwrt/staging_dir/target-mipsel_24kc_musl-1.1.16/pkginfo/toolchain.default.install.clean; fi
echo "libc" >>
/home/mzhi/proj_src/openwrt_17_01/openwrt/staging_dir/target-mipsel_24kc_musl-1.1.16/pkginfo/toolchain.default.install
if [ -f /home/mzhi/proj_src/openwrt_17_01/openwrt/staging_dir/target-mipsel_24kc_musl-1.1.16/pkginfo/toolchain.default.install.clean ]; then rm -f /home/mzhi/proj_src/openwrt_17_01/openwrt/staging_dir/target-mipsel_24kc_musl-1.1.16/pkginfo/toolchain.default.install /home/mzhi/proj_src/openwrt_17_01/openwrt/staging_dir/target-mipsel_24kc_musl-1.1.16/pkginfo/toolchain.default.install.clean; fi
echo "libgcc" >>
/home/mzhi/proj_src/openwrt_17_01/openwrt/staging_dir/target-mipsel_24kc_musl-1.1.16/pkginfo/toolchain.default.install
if [ -f /home/mzhi/proj_src/openwrt_17_01/openwrt/staging_dir/target-mipsel_24kc_musl-1.1.16/pkginfo/toolchain.default.install.clean ]; then rm -f /home/mzhi/proj_src/openwrt_17_01/openwrt/staging_dir/target-mipsel_24kc_musl-1.1.16/pkginfo/toolchain.default.install /home/mzhi/proj_src/openwrt_17_01/openwrt/staging_dir/target-mipsel_24kc_musl-1.1.16/pkginfo/toolchain.default.install.clean; fi
if [ -f /home/mzhi/proj_src/openwrt_17_01/openwrt/staging_dir/target-mipsel_24kc_musl-1.1.16/pkginfo/toolchain.default.install.clean ]; then rm -f /home/mzhi/proj_src/openwrt_17_01/openwrt/staging_dir/target-mipsel_24kc_musl-1.1.16/pkginfo/toolchain.default.install /home/mzhi/proj_src/openwrt_17_01/openwrt/staging_dir/target-mipsel_24kc_musl-1.1.16/pkginfo/toolchain.default.install.clean; fi
if [ -f /home/mzhi/proj_src/openwrt_17_01/openwrt/staging_dir/target-mipsel_24kc_musl-1.1.16/pkginfo/toolchain.default.install.clean ]; then rm -f /home/mzhi/proj_src/openwrt_17_01/openwrt/staging_dir/target-mipsel_24kc_musl-1.1.16/pkginfo/toolchain.default.install /home/mzhi/proj_src/openwrt_17_01/openwrt/staging_dir/target-mipsel_24kc_musl-1.1.16/pkginfo/toolchain.default.install.clean; fi
echo "libstdcpp" >>
/home/mzhi/proj_src/openwrt_17_01/openwrt/staging_dir/target-mipsel_24kc_musl-1.1.16/pkginfo/toolchain.default.install
if [ -f /home/mzhi/proj_src/openwrt_17_01/openwrt/staging_dir/target-mipsel_24kc_musl-1.1.16/pkginfo/toolchain.default.install.clean ]; then rm -f /home/mzhi/proj_src/openwrt_17_01/openwrt/staging_dir/target-mipsel_24kc_musl-1.1.16/pkginfo/toolchain.default.install /home/mzhi/proj_src/openwrt_17_01/openwrt/staging_dir/target-mipsel_24kc_musl-1.1.16/pkginfo/toolchain.default.install.clean; fi
echo "libpthread" >>
/home/mzhi/proj_src/openwrt_17_01/openwrt/staging_dir/target-mipsel_24kc_musl-1.1.16/pkginfo/toolchain.default.install
if [ -f /home/mzhi/proj_src/openwrt_17_01/openwrt/staging_dir/target-mipsel_24kc_musl-1.1.16/pkginfo/toolchain.default.install.clean ]; then rm -f /home/mzhi/proj_src/openwrt_17_01/openwrt/staging_dir/target-mipsel_24kc_musl-1.1.16/pkginfo/toolchain.default.install /home/mzhi/proj_src/openwrt_17_01/openwrt/staging_dir/target-mipsel_24kc_musl-1.1.16/pkginfo/toolchain.default.install.clean; fi
if [ -f /home/mzhi/proj_src/openwrt_17_01/openwrt/staging_dir/target-mipsel_24kc_musl-1.1.16/pkginfo/toolchain.default.install.clean ]; then rm -f /home/mzhi/proj_src/openwrt_17_01/openwrt/staging_dir/target-mipsel_24kc_musl-1.1.16/pkginfo/toolchain.default.install /home/mzhi/proj_src/openwrt_17_01/openwrt/staging_dir/target-mipsel_24kc_musl-1.1.16/pkginfo/toolchain.default.install.clean; fi
echo "librt" >>
/home/mzhi/proj_src/openwrt_17_01/openwrt/staging_dir/target-mipsel_24kc_musl-1.1.16/pkginfo/toolchain.default.install
if [ -f /home/mzhi/proj_src/openwrt_17_01/openwrt/staging_dir/target-mipsel_24kc_musl-1.1.16/pkginfo/toolchain.default.install.clean ]; then rm -f /home/mzhi/proj_src/openwrt_17_01/openwrt/staging_dir/target-mipsel_24kc_musl-1.1.16/pkginfo/toolchain.default.install /home/mzhi/proj_src/openwrt_17_01/openwrt/staging_dir/target-mipsel_24kc_musl-1.1.16/pkginfo/toolchain.default.install.clean; fi
if [ -f /home/mzhi/proj_src/openwrt_17_01/openwrt/staging_dir/target-mipsel_24kc_musl-1.1.16/pkginfo/toolchain.default.install.clean ]; then rm -f /home/mzhi/proj_src/openwrt_17_01/openwrt/staging_dir/target-mipsel_24kc_musl-1.1.16/pkginfo/toolchain.default.install /home/mzhi/proj_src/openwrt_17_01/openwrt/staging_dir/target-mipsel_24kc_musl-1.1.16/pkginfo/toolchain.default.install.clean; fi
if [ -f /home/mzhi/proj_src/openwrt_17_01/openwrt/staging_dir/target-mipsel_24kc_musl-1.1.16/pkginfo/toolchain.default.install.clean ]; then rm -f /home/mzhi/proj_src/openwrt_17_01/openwrt/staging_dir/target-mipsel_24kc_musl-1.1.16/pkginfo/toolchain.default.install /home/mzhi/proj_src/openwrt_17_01/openwrt/staging_dir/target-mipsel_24kc_musl-1.1.16/pkginfo/toolchain.default.install.clean; fi
make[2]: Leaving directory '/home/mzhi/proj_src/openwrt_17_01/openwrt/package/libs/toolchain'
make[2]: Entering directory '/home/mzhi/proj_src/openwrt_17_01/mypackages/examples/helloworld'
mkdir -p /home/mzhi/proj_src/openwrt_17_01/openwrt/bin/targets/ramips/mt7621/packages /home/mzhi/proj_src/openwrt_17_01/openwrt/build_dir/target-mipsel_24kc_musl-1.1.16/helloworld/ipkg-mipsel_24kc/helloworld/CONTROL /home/mzhi/proj_src/openwrt_17_01/openwrt/staging_dir/target-mipsel_24kc_musl-1.1.16/pkginfo
install -d -m0755 /home/mzhi/proj_src/openwrt_17_01/openwrt/build_dir/target-mipsel_24kc_musl-1.1.16/helloworld/ipkg-mipsel_24kc/helloworld/usr/bin
install -m0755 /home/mzhi/proj_src/openwrt_17_01/openwrt/build_dir/target-mipsel_24kc_musl-1.1.16/helloworld/helloworld /home/mzhi/proj_src/openwrt_17_01/openwrt/build_dir/target-mipsel_24kc_musl-1.1.16/helloworld/ipkg-mipsel_24kc/helloworld/usr/bin
find /home/mzhi/proj_src/openwrt_17_01/openwrt/build_dir/target-mipsel_24kc_musl-1.1.16/helloworld/ipkg-mipsel_24kc/helloworld -name 'CVS' -o -name '.svn' -o -name '.#*' -o -name '*~'| xargs -r rm -rf
Package helloworld is missing dependencies for the following libraries:
libc.so.6
Makefile:65: recipe for target '/home/mzhi/proj_src/openwrt_17_01/openwrt/bin/packages/mipsel_24kc/mypackages/helloworld_1.0-1_mipsel_24kc.ipk' failed
make[2]: *** [/home/mzhi/proj_src/openwrt_17_01/openwrt/bin/packages/mipsel_24kc/mypackages/helloworld_1.0-1_mipsel_24kc.ipk] Error 1
make[2]: Leaving directory '/home/mzhi/proj_src/openwrt_17_01/mypackages/examples/helloworld'
package/Makefile:105: recipe for target 'package/feeds/mypackages/helloworld/compile' failed
make[1]: *** [package/feeds/mypackages/helloworld/compile] Error 2
make[1]: Leaving directory '/home/mzhi/proj_src/openwrt_17_01/openwrt'
/home/mzhi/proj_src/openwrt_17_01/openwrt/include/toplevel.mk:205: recipe for target 'package/helloworld/compile' failed
make: *** [package/helloworld/compile] Error 2
операционная система: Ubuntu 16.04
Целевая система: Mediatek Ralink MIPS
Подзадача: платы на базе MT7621
Целевой профиль: Ubiquiti EdgeRouter X
Много гуглил, но до сих пор не могу понять, почему компилятор не видит необходимую библиотеку libc.so.6 и как правильно подключить ее в Makefile
Возможно, кто-то уже сталкивался с подобными проблемами, пожалуйста, поделитесь решением.