我正在尝试为OpenWrt编译简单的helloworld程序(使用构建系统,分支17.01.6)。我使用了两个教程:helloworld tutorial on official site和by Eric Bishop,这是C ++的第2部分。
但是在编译helloworld-package时出现错误:Package helloworld is missing dependencies for the following libraries:
libc.so.6
文件结构:
。
├--openwrt_17_01
├--source#源目录,构建系统
├--helloworld#helloworld项目
| └--src
| ├--helloworld.cpp
| └--Makefile#C ++工程生成文件
└--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 / examples / 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
目标系统:联发科技Ralink MIPS
子目标:基于MT7621的板
目标配置文件:Ubiquiti EdgeRouter X
谷歌搜索很多,但是我仍然不明白为什么编译器看不到必要的库libc.so.6以及如何在Makefile中正确连接
也许有人已经遇到了类似的问题,请分享解决方案。
答案 0 :(得分:0)
您想要的答案在这里:https://fleshandmachines.wordpress.com/2011/08/22/openwrt-cc-programing/
您必须将$(CC)
的{{1}}和$(CXX)
的{{1}}更改