Ошибка при сборке cx_Freeze для OpenWrt: "неопределенная ссылка на __finite" и другие
Я пытаюсь упаковать модуль Python cx_Freeze для OpenWrt. Я написал Makefile (включенный ниже), и я доволен тем, как он работает и что я определил (это мое понимание того, что Build/Compile/PyMod
будет эффективно работать setup.py
с настройкой компилятора toolchain).
При попытке собрать cx_Freeze (как часть обычного make world
работа), это не удается при ссылке на python2.7
утверждая, что есть неопределенные ссылки __isnan
, __isinf
, __finite
, а также __rawmemchr
, Я включил полный список ошибок ниже.
Я очистил buildroot и перекомпилировал весь набор инструментов. Я также пробовал несколько архитектур (в частности, x86 и brcm2708), только чтобы получить ту же ошибку. У меня нет проблем со сборкой любого другого пакета Python - кажется, что дифференциатор cx_Freeze пытается связать себя с самим Python.
Переключение библиотеки C на glibc работает, однако я хотел бы также поддерживать библиотеку C по умолчанию, musl.
Пожалуйста, дайте мне знать, могу ли я предоставить дополнительную информацию о хост-системе или о каком-либо дополнительном контексте проблемы.
Makefile
include $(TOPDIR)/rules.mk
PKG_NAME:=cx_Freeze
PKG_VERSION:=5.1.1
PKG_RELEASE:=1
PKG_LICENSE:=PSF
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
PKG_SOURCE_URL:=https://pypi.python.org/packages/5f/16/eab51d6571dfec2554248cb027c51babd04d97f594ab6359e0707361297d/
PKG_HASH:=2eadddde670f5c5f6cf88638a0ac4e5d5fe181292a31063275fa56c7bf22426b
PKG_BUILD_DIR:=$(BUILD_DIR)/$(PKG_NAME)-$(PKG_VERSION)
PKG_BUILD_DEPENDS:=python
include $(INCLUDE_DIR)/package.mk
$(call include_mk, python-package.mk)
define Package/python-cx_Freeze
SUBMENU:=Python
SECTION:=lang
CATEGORY:=Languages
TITLE:=cx_Freeze
URL:=https://github.com/anthony-tuininga/cx_Freeze
DEPENDS:=+python
endef
define Package/python-cx_Freeze/description
cx_Freeze is a set of scripts and modules for freezing Python scripts into executables, in much the same way that py2exe and py2app do.
endef
define Build/Compile
$(call Build/Compile/PyMod,,install --prefix=/usr --root=$(PKG_INSTALL_DIR))
endef
define Package/python-cx_Freeze/install
$(INSTALL_DIR) $(1)$(PYTHON_PKG_DIR)
$(INSTALL_DIR) $(1)/usr/bin
$(CP) \
$(PKG_INSTALL_DIR)$(PYTHON_PKG_DIR)/* \
$(1)$(PYTHON_PKG_DIR)/
$(CP) $(PKG_INSTALL_DIR)/usr/bin/* $(1)/usr/bin
endef
$(eval $(call BuildPackage,python-cx_Freeze))
Вывод ошибок компоновщика:
running build_ext
building 'cx_Freeze.util' extension
creating build/temp.linux2-2.7
creating build/temp.linux2-2.7/source
x86_64-openwrt-linux-musl-gcc -DNDEBUG -g -fwrapv -O3 -Wall -Wstrict-prototypes -Os -pipe -fno-caller-saves -fno-plt -fhonour-copts -Wno-error=unused-but-set-variable -Wno-error=unused-result -iremap /home/vagrant/workspace/build_dir/target-x86_64_musl-1.1.16/cx_Freeze-5.1.1:cx_Freeze-5.1.1 -Wformat -Werror=format-security -fstack-protector -D_FORTIFY_SOURCE=1 -Wl,-z,now -Wl,-z,relro -I/home/vagrant/workspace/staging_dir/target-x86_64_musl-1.1.16/usr/include -I/home/vagrant/workspace/staging_dir/target-x86_64_musl-1.1.16/include -I/home/vagrant/workspace/staging_dir/toolchain-x86_64_gcc-5.4.0_musl-1.1.16/usr/include -I/home/vagrant/workspace/staging_dir/toolchain-x86_64_gcc-5.4.0_musl-1.1.16/include/fortify -I/home/vagrant/workspace/staging_dir/toolchain-x86_64_gcc-5.4.0_musl-1.1.16/include -I/home/vagrant/workspace/staging_dir/target-x86_64_musl-1.1.16/usr/include/python2.7 -fPIC -I/home/vagrant/workspace/staging_dir/target-x86_64_musl-1.1.16/usr/include/python2.7 -c source/util.c -o build/temp.linux2-2.7/source/util.o
x86_64-openwrt-linux-musl-gcc -shared -L/home/vagrant/workspace/staging_dir/target-x86_64_musl-1.1.16/usr/lib -L/home/vagrant/workspace/staging_dir/target-x86_64_musl-1.1.16/lib -L/home/vagrant/workspace/staging_dir/toolchain-x86_64_gcc-5.4.0_musl-1.1.16/usr/lib -L/home/vagrant/workspace/staging_dir/toolchain-x86_64_gcc-5.4.0_musl-1.1.16/lib -znow -zrelro -lpython2.7 -Os -pipe -fno-caller-saves -fno-plt -fhonour-copts -Wno-error=unused-but-set-variable -Wno-error=unused-result -iremap /home/vagrant/workspace/build_dir/target-x86_64_musl-1.1.16/cx_Freeze-5.1.1:cx_Freeze-5.1.1 -Wformat -Werror=format-security -fstack-protector -D_FORTIFY_SOURCE=1 -Wl,-z,now -Wl,-z,relro -I/home/vagrant/workspace/staging_dir/target-x86_64_musl-1.1.16/usr/include -I/home/vagrant/workspace/staging_dir/target-x86_64_musl-1.1.16/include -I/home/vagrant/workspace/staging_dir/toolchain-x86_64_gcc-5.4.0_musl-1.1.16/usr/include -I/home/vagrant/workspace/staging_dir/toolchain-x86_64_gcc-5.4.0_musl-1.1.16/include/fortify -I/home/vagrant/workspace/staging_dir/toolchain-x86_64_gcc-5.4.0_musl-1.1.16/include -I/home/vagrant/workspace/staging_dir/target-x86_64_musl-1.1.16/usr/include/python2.7 build/temp.linux2-2.7/source/util.o -o build/lib.linux2-2.7/cx_Freeze/util.so
creating build/temp.linux2-2.7/source/bases
x86_64-openwrt-linux-musl-gcc -DNDEBUG -g -fwrapv -O3 -Wall -Wstrict-prototypes -Os -pipe -fno-caller-saves -fno-plt -fhonour-copts -Wno-error=unused-but-set-variable -Wno-error=unused-result -iremap /home/vagrant/workspace/build_dir/target-x86_64_musl-1.1.16/cx_Freeze-5.1.1:cx_Freeze-5.1.1 -Wformat -Werror=format-security -fstack-protector -D_FORTIFY_SOURCE=1 -Wl,-z,now -Wl,-z,relro -I/home/vagrant/workspace/staging_dir/target-x86_64_musl-1.1.16/usr/include -I/home/vagrant/workspace/staging_dir/target-x86_64_musl-1.1.16/include -I/home/vagrant/workspace/staging_dir/toolchain-x86_64_gcc-5.4.0_musl-1.1.16/usr/include -I/home/vagrant/workspace/staging_dir/toolchain-x86_64_gcc-5.4.0_musl-1.1.16/include/fortify -I/home/vagrant/workspace/staging_dir/toolchain-x86_64_gcc-5.4.0_musl-1.1.16/include -I/home/vagrant/workspace/staging_dir/target-x86_64_musl-1.1.16/usr/include/python2.7 -fPIC -I/home/vagrant/workspace/staging_dir/target-x86_64_musl-1.1.16/usr/include/python2.7 -c source/bases/Console.c -o build/temp.linux2-2.7/source/bases/Console.o
creating build/lib.linux2-2.7/cx_Freeze/bases
x86_64-openwrt-linux-musl-gcc build/temp.linux2-2.7/source/bases/Console.o -L/home/vagrant/workspace/staging_dir/target-x86_64_musl-1.1.16/host/lib/python2.7/config -lpython2.7 -o build/lib.linux2-2.7/cx_Freeze/bases/Console -Xlinker -export-dynamic -lpthread -ldl -lutil -lm -lz -s
/home/vagrant/workspace/staging_dir/target-x86_64_musl-1.1.16/host/lib/python2.7/config/libpython2.7.a(floatobject.o): In function `float_richcompare':
/home/vagrant/workspace/build_dir/target-x86_64_musl-1.1.16/host/Python-2.7.13/Objects/floatobject.c:431: undefined reference to `__finite'
/home/vagrant/workspace/staging_dir/target-x86_64_musl-1.1.16/host/lib/python2.7/config/libpython2.7.a(floatobject.o): In function `float_is_integer':
/home/vagrant/workspace/build_dir/target-x86_64_musl-1.1.16/host/Python-2.7.13/Objects/floatobject.c:992: undefined reference to `__finite'
/home/vagrant/workspace/build_dir/target-x86_64_musl-1.1.16/host/Python-2.7.13/Objects/floatobject.c:992: undefined reference to `__finite'
/home/vagrant/workspace/staging_dir/target-x86_64_musl-1.1.16/host/lib/python2.7/config/libpython2.7.a(floatobject.o): In function `float_as_integer_ratio':
/home/vagrant/workspace/build_dir/target-x86_64_musl-1.1.16/host/Python-2.7.13/Objects/floatobject.c:1731: undefined reference to `__isinf'
/home/vagrant/workspace/build_dir/target-x86_64_musl-1.1.16/host/Python-2.7.13/Objects/floatobject.c:1737: undefined reference to `__isnan'
/home/vagrant/workspace/staging_dir/target-x86_64_musl-1.1.16/host/lib/python2.7/config/libpython2.7.a(floatobject.o): In function `float_hex':
/home/vagrant/workspace/build_dir/target-x86_64_musl-1.1.16/host/Python-2.7.13/Objects/floatobject.c:1383: undefined reference to `__isnan'
/home/vagrant/workspace/build_dir/target-x86_64_musl-1.1.16/host/Python-2.7.13/Objects/floatobject.c:1383: undefined reference to `__isinf'
/home/vagrant/workspace/staging_dir/target-x86_64_musl-1.1.16/host/lib/python2.7/config/libpython2.7.a(floatobject.o): In function `float_pow':
/home/vagrant/workspace/build_dir/target-x86_64_musl-1.1.16/host/Python-2.7.13/Objects/floatobject.c:837: undefined reference to `__isnan'
/home/vagrant/workspace/build_dir/target-x86_64_musl-1.1.16/host/Python-2.7.13/Objects/floatobject.c:840: undefined reference to `__isnan'
/home/vagrant/workspace/build_dir/target-x86_64_musl-1.1.16/host/Python-2.7.13/Objects/floatobject.c:843: undefined reference to `__isinf'
/home/vagrant/workspace/build_dir/target-x86_64_musl-1.1.16/host/Python-2.7.13/Objects/floatobject.c:858: undefined reference to `__isinf'
/home/vagrant/workspace/staging_dir/target-x86_64_musl-1.1.16/host/lib/python2.7/config/libpython2.7.a(floatobject.o): In function `_PyFloat_Pack4':
/home/vagrant/workspace/build_dir/target-x86_64_musl-1.1.16/host/Python-2.7.13/Objects/floatobject.c:2396: undefined reference to `__isinff'
/home/vagrant/workspace/build_dir/target-x86_64_musl-1.1.16/host/Python-2.7.13/Objects/floatobject.c:2396: undefined reference to `__isinf'
/home/vagrant/workspace/staging_dir/target-x86_64_musl-1.1.16/host/lib/python2.7/config/libpython2.7.a(longobject.o): In function `PyLong_FromDouble':
/home/vagrant/workspace/build_dir/target-x86_64_musl-1.1.16/host/Python-2.7.13/Objects/longobject.c:178: undefined reference to `__isinf'
/home/vagrant/workspace/build_dir/target-x86_64_musl-1.1.16/host/Python-2.7.13/Objects/longobject.c:183: undefined reference to `__isnan'
/home/vagrant/workspace/staging_dir/target-x86_64_musl-1.1.16/host/lib/python2.7/config/libpython2.7.a(object.o): In function `_Py_HashDouble':
/home/vagrant/workspace/build_dir/target-x86_64_musl-1.1.16/host/Python-2.7.13/Objects/object.c:1033: undefined reference to `__finite'
/home/vagrant/workspace/build_dir/target-x86_64_musl-1.1.16/host/Python-2.7.13/Objects/object.c:1034: undefined reference to `__isinf'
/home/vagrant/workspace/staging_dir/target-x86_64_musl-1.1.16/host/lib/python2.7/config/libpython2.7.a(sysmodule.o): In function `makepathobject':
/home/vagrant/workspace/build_dir/target-x86_64_musl-1.1.16/host/Python-2.7.13/Python/sysmodule.c:1552: undefined reference to `__rawmemchr'
/home/vagrant/workspace/staging_dir/target-x86_64_musl-1.1.16/host/lib/python2.7/config/libpython2.7.a(posixmodule.o): In function `posix_tmpnam':
/home/vagrant/workspace/build_dir/target-x86_64_musl-1.1.16/host/Python-2.7.13/./Modules/posixmodule.c:7614: undefined reference to `tmpnam_r'
/home/vagrant/workspace/staging_dir/target-x86_64_musl-1.1.16/host/lib/python2.7/config/libpython2.7.a(tokenizer.o): In function `tok_nextc':
/home/vagrant/workspace/build_dir/target-x86_64_musl-1.1.16/host/Python-2.7.13/Parser/tokenizer.c:1000: undefined reference to `__rawmemchr'
/home/vagrant/workspace/build_dir/target-x86_64_musl-1.1.16/host/Python-2.7.13/Parser/tokenizer.c:953: undefined reference to `__rawmemchr'
/home/vagrant/workspace/build_dir/target-x86_64_musl-1.1.16/host/Python-2.7.13/Parser/tokenizer.c:927: undefined reference to `__rawmemchr'
/home/vagrant/workspace/build_dir/target-x86_64_musl-1.1.16/host/Python-2.7.13/Parser/tokenizer.c:870: undefined reference to `__rawmemchr'
/home/vagrant/workspace/staging_dir/target-x86_64_musl-1.1.16/host/lib/python2.7/config/libpython2.7.a(complexobject.o): In function `_Py_c_abs':
/home/vagrant/workspace/build_dir/target-x86_64_musl-1.1.16/host/Python-2.7.13/Objects/complexobject.c:196: undefined reference to `__finite'
/home/vagrant/workspace/build_dir/target-x86_64_musl-1.1.16/host/Python-2.7.13/Objects/complexobject.c:196: undefined reference to `__finite'
/home/vagrant/workspace/build_dir/target-x86_64_musl-1.1.16/host/Python-2.7.13/Objects/complexobject.c:200: undefined reference to `__isinf'
/home/vagrant/workspace/build_dir/target-x86_64_musl-1.1.16/host/Python-2.7.13/Objects/complexobject.c:205: undefined reference to `__isinf'
/home/vagrant/workspace/build_dir/target-x86_64_musl-1.1.16/host/Python-2.7.13/Objects/complexobject.c:215: undefined reference to `__finite'
/home/vagrant/workspace/build_dir/target-x86_64_musl-1.1.16/host/Python-2.7.13/Objects/complexobject.c:196: undefined reference to `__finite'
/home/vagrant/workspace/build_dir/target-x86_64_musl-1.1.16/host/Python-2.7.13/Objects/complexobject.c:196: undefined reference to `__finite'
/home/vagrant/workspace/build_dir/target-x86_64_musl-1.1.16/host/Python-2.7.13/Objects/complexobject.c:200: undefined reference to `__isinf'
/home/vagrant/workspace/build_dir/target-x86_64_musl-1.1.16/host/Python-2.7.13/Objects/complexobject.c:205: undefined reference to `__isinf'
/home/vagrant/workspace/build_dir/target-x86_64_musl-1.1.16/host/Python-2.7.13/Objects/complexobject.c:215: undefined reference to `__finite'
/home/vagrant/workspace/staging_dir/target-x86_64_musl-1.1.16/host/lib/python2.7/config/libpython2.7.a(bltinmodule.o): In function `builtin_round':
/home/vagrant/workspace/build_dir/target-x86_64_musl-1.1.16/host/Python-2.7.13/Python/bltinmodule.c:2198: undefined reference to `__finite'
collect2: error: ld returned 1 exit status
error: command 'x86_64-openwrt-linux-musl-gcc' failed with exit status 1
Версии программного обеспечения:
- OpenWrt 17.01.4
- cx_Freeze 5.1.1
- Python 2.7
- Сборка ОС: CentOS 7.4 в VirtualBox
Установленные пакеты на виртуальной машине CentOS 7 build:
- Пакет инструментов разработки
- GCC-C++
- мерзавец
- Ncurses-разви
- Perl
- Perl-Thread-Queue
- питон
- расстегнуть молнию
- Wget
- XZ
- Zlib-разви
- Zlib-статические