找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
广告投放联系QQ68610888
查看: 3556|回复: 14

LEDE 17.01.4安装numpy问题

[复制链接]
  大家好,鄙人Openwrt/LEDE新手一枚,最近才开始折腾这一系统,使用的路由器是Netgear R8000系列,Arm cortex a9类的CPU,费了不少功夫,配好了USB扩容Flash,装上了python3.6,然后在使用pip3 install numpy时出现了如下错误:

  RuntimeError: Broken toolchain: cannot link a simple C program

  在百度、Google查了各种各样的方法,有改python源文件的(mfinfo=None),有强行在安装命令前加一堆乱七八糟的命令的,有说缺C语言编译器的(窃以为这种可能性比较大,但是装了gcc之后并没有什么卵用,看完整的log,好像是缺一个ccache,但是opkg里也没有这个包),总之折腾了好几天,没有任何进展,在搜索引擎中也没有找到有关openwrt/LEDE上安装numpy的先例,实在是想不出招了,特来请教各位高手们,还望不吝赐教,完整的traceback如下:

    Traceback (most recent call last):
      File "<string>", line 1, in <module>
      File "/tmp/pip-build-tzfse4e_/numpy/setup.py", line 394, in <module>
        setup_package()
      File "/tmp/pip-build-tzfse4e_/numpy/setup.py", line 386, in setup_package
        setup(**metadata)
      File "/tmp/pip-build-tzfse4e_/numpy/numpy/distutils/core.py", line 169, in setup
        return old_setup(**new_attr)
      File "/usr/lib/python3.6/distutils/core.py", line 148, in setup
        dist.run_commands()
      File "/usr/lib/python3.6/distutils/dist.py", line 955, in run_commands
        self.run_command(cmd)
      File "/usr/lib/python3.6/distutils/dist.py", line 974, in run_command
        cmd_obj.run()
      File "/tmp/pip-build-tzfse4e_/numpy/numpy/distutils/command/install.py", line 62, in run
        r = self.setuptools_run()
      File "/tmp/pip-build-tzfse4e_/numpy/numpy/distutils/command/install.py", line 36, in setuptools_run
        return distutils_install.run(self)
      File "/usr/lib/python3.6/distutils/command/install.py", line 545, in run
        self.run_command('build')
      File "/usr/lib/python3.6/distutils/cmd.py", line 313, in run_command
        self.distribution.run_command(command)
      File "/usr/lib/python3.6/distutils/dist.py", line 974, in run_command
        cmd_obj.run()
      File "/tmp/pip-build-tzfse4e_/numpy/numpy/distutils/command/build.py", line 47, in run
        old_build.run(self)
      File "/usr/lib/python3.6/distutils/command/build.py", line 135, in run
        self.run_command(cmd_name)
      File "/usr/lib/python3.6/distutils/cmd.py", line 313, in run_command
        self.distribution.run_command(command)
      File "/usr/lib/python3.6/distutils/dist.py", line 974, in run_command
        cmd_obj.run()
      File "/tmp/pip-build-tzfse4e_/numpy/numpy/distutils/command/build_src.py", line 148, in run
        self.build_sources()
      File "/tmp/pip-build-tzfse4e_/numpy/numpy/distutils/command/build_src.py", line 159, in build_sources
        self.build_library_sources(*libname_info)
      File "/tmp/pip-build-tzfse4e_/numpy/numpy/distutils/command/build_src.py", line 294, in build_library_sources
        sources = self.generate_sources(sources, (lib_name, build_info))
      File "/tmp/pip-build-tzfse4e_/numpy/numpy/distutils/command/build_src.py", line 377, in generate_sources
        source = func(extension, build_dir)
      File "numpy/core/setup.py", line 675, in get_mathlib_info
        raise RuntimeError("Broken toolchain: cannot link a simple C program")
    RuntimeError: Broken toolchain: cannot link a simple C program

    ----------------------------------------
Command "/usr/bin/python3.6 -u -c "import setuptools, tokenize;__file__='/tmp/pip-build-tzfse4e_/numpy/setup.py';exec(compile(getattr(tokenize, 'open', open)(__file__).read().replace('\r\n', '\n'), __file__, 'exec'))" install --record /tmp/pip-xlubx0sk-record/install-record.txt --single-version-externally-managed --compile" failed with error code 1 in /tmp/pip-build-tzfse4e_/numpy/


我的恩山、我的无线 The best wifi forum is right here.
我就好奇的问一句…你是打算在路由上机器学习嘛…居然还能用到numpy

点评

呃,一下就被你猜中了orz  详情 回复 发表于 2018-4-21 09:12
我的恩山、我的无线 The best wifi forum is right here.
回复

使用道具 举报

应该是缺编译器。建议想办法在电脑上交叉编译好 binary 拿到路由器上安装。

点评

有想过,但是不知道numpy这种以python语言为主,而且也没啥makefile的包能不能用交叉编译生成ipk,opencv我看是有人成功过的...  详情 回复 发表于 2018-4-21 09:13
我的恩山、我的无线 The best wifi forum is right here.
回复

使用道具 举报

 楼主| | 显示全部楼层
formjcdq 发表于 2018-4-20 23:51
我就好奇的问一句…你是打算在路由上机器学习嘛…居然还能用到numpy

呃,一下就被你猜中了orz

点评

真佩服你们这些人在路由器上折腾python的,就不能好好的跑个树莓派或者orange pi等,或者虚拟机昵, 估计在openwrt 折腾python的,坑肯定不少,心累死你啊  详情 回复 发表于 2018-4-21 09:58
我的恩山、我的无线 The best wifi forum is right here.
回复

使用道具 举报

 楼主| | 显示全部楼层
ysc3839 发表于 2018-4-21 02:30
应该是缺编译器。建议想办法在电脑上交叉编译好 binary 拿到路由器上安装。

有想过,但是不知道numpy这种以python语言为主,而且也没啥makefile的包能不能用交叉编译生成ipk,opencv我看是有人成功过的...

点评

不是用 opkg 管理,而是用 pip 管理。pip 可以安装预编译的 whl 文件。  详情 回复 发表于 2018-4-21 11:07
我的恩山、我的无线 The best wifi forum is right here.
回复

使用道具 举报

Leon018 发表于 2018-4-21 09:12
呃,一下就被你猜中了orz

真佩服你们这些人在路由器上折腾python的,就不能好好的跑个树莓派或者orange pi等,或者虚拟机昵, 估计在openwrt 折腾python的,坑肯定不少,心累死你啊
我的恩山、我的无线 The best wifi forum is right here.
回复

使用道具 举报

其实个人认为,路由器就好好当好路由器的本职,至于折腾其它,至少在arm上折腾linux等,至少性能上会比路由器cpu好不少, 坑也比较少,当然,少年们有的是一伙折腾的心

点评

论性能路由器自然是远不如树莓派之类的嵌入式设备啦,不过R8000系有256MB内存,能用上也是不错的,不过我确实感觉回天乏术,心累  详情 回复 发表于 2018-4-21 16:36
我的恩山、我的无线 The best wifi forum is right here.
回复

使用道具 举报

来自手机 | 显示全部楼层
Leon018 发表于 2018-4-21 09:13
有想过,但是不知道numpy这种以python语言为主,而且也没啥makefile的包能不能用交叉编译生成ipk,opencv ...

不是用 opkg 管理,而是用 pip 管理。pip 可以安装预编译的 whl 文件。

点评

明白,不过numpy官网提供的whl并没有支持arm架构的,也没看到哪有别人造好的轮子。感觉这种预编译的whl应该要在相同架构下用pip打包才行,手上也没有其他和R8000同架构能用的板子  详情 回复 发表于 2018-4-21 16:38
我的恩山、我的无线 The best wifi forum is right here.
回复

使用道具 举报

numpy包含大量的c/c++代码,从源码安装需要完整的的c/c++编译环境和math依赖库。
想在路由器构建这么个环境,再加上你路由器有限的内存和CPU性能,只能祝你好运了。
所以需要在你的交叉编译环境预编译成ipk,通过opkg安装。

不过话说回来,你路由器那么点内存跑这个?不要告诉我你只想运行下hello-kitty.

点评

我之前是这么想的,不过没真正试过。看到网上有人成功把opencv编译成了ipk,研究了一下发现opencv是用cmake装的,只需要写一个简单的makefile就能用lede的sdk编译成功了。但是numpy的安装是用python执行setup.py的,  详情 回复 发表于 2018-4-21 16:43
我的恩山、我的无线 The best wifi forum is right here.
回复

使用道具 举报

Leon018 发表于 2018-4-21 09:12
呃,一下就被你猜中了orz

折腾这个还不如随便找台电脑……就算是虚拟机虚拟个Linux出来性能也比路由强。更何况现在不少框架还是有办法在windows上跑的

点评

嗯,在这上面弄也只是我一厢情愿的想法而已,备选方案有很多,实在不行就先放一放这个好了  详情 回复 发表于 2018-4-21 16:40
我的恩山、我的无线 The best wifi forum is right here.
回复

使用道具 举报

 楼主| | 显示全部楼层
skyfile 发表于 2018-4-21 10:01
其实个人认为,路由器就好好当好路由器的本职,至于折腾其它,至少在arm上折腾linux等,至少性能上会比路由 ...

论性能路由器自然是远不如树莓派之类的嵌入式设备啦,不过R8000系有256MB内存,能用上也是不错的,不过我确实感觉回天乏术,心累
我的恩山、我的无线 The best wifi forum is right here.
回复

使用道具 举报

 楼主| | 显示全部楼层
ysc3839 发表于 2018-4-21 11:07
不是用 opkg 管理,而是用 pip 管理。pip 可以安装预编译的 whl 文件。

明白,不过numpy官网提供的whl并没有支持arm架构的,也没看到哪有别人造好的轮子。感觉这种预编译的whl应该要在相同架构下用pip打包才行,手上也没有其他和R8000同架构能用的板子
我的恩山、我的无线 The best wifi forum is right here.
回复

使用道具 举报

 楼主| | 显示全部楼层
formjcdq 发表于 2018-4-21 12:42
折腾这个还不如随便找台电脑……就算是虚拟机虚拟个Linux出来性能也比路由强。更何况现在不少框架还是有 ...

嗯,在这上面弄也只是我一厢情愿的想法而已,备选方案有很多,实在不行就先放一放这个好了
我的恩山、我的无线 The best wifi forum is right here.
回复

使用道具 举报

 楼主| | 显示全部楼层
djjk 发表于 2018-4-21 11:37
numpy包含大量的c/c++代码,从源码安装需要完整的的c/c++编译环境和math依赖库。
想在路由器构建这么个环 ...

我之前是这么想的,不过没真正试过。看到网上有人成功把opencv编译成了ipk,研究了一下发现opencv是用cmake装的,只需要写一个简单的makefile就能用lede的sdk编译成功了。但是numpy的安装是用python执行setup.py的,感觉和opencv这种库还是差的比较多,就没深入去研究可行性了。

R8000有256MB内存呀,做点简单矩阵运算应该没啥大问题吧。
我的恩山、我的无线 The best wifi forum is right here.
回复

使用道具 举报

麻烦问一下Python3.6是怎么安装的呢? 自己 编译的吗?
我的恩山、我的无线 The best wifi forum is right here.
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

有疑问请添加管理员QQ86788181|手机版|小黑屋|Archiver|恩山无线论坛(常州市恩山计算机开发有限公司版权所有) ( 苏ICP备05084872号 )

GMT+8, 2024-4-27 03:59

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

| 江苏省互联网有害信息举报中心 举报信箱:js12377 | @jischina.com.cn 举报电话:025-88802724 本站不良内容举报信箱:68610888@qq.com 举报电话:0519-86695797

快速回复 返回顶部 返回列表