linux下编译出来的东西跟你的编译器跟你的运行环境都有关系的,最好不要拿人家编译的来用,很多时候用不了。
你运行不了有什么提示么?你都做了什么了?
--
Best Regards,
Leo Jay
跟你用什么版本的linux以及什么libc也有关的。
而且我没编译过armv5,我编译的是armv4t
arm9、10 可以用 debian arm 的包。
debian linux 有 arm 版本,包含几乎全套软件。
2008/7/30 Jiahua Huang <jhuang...@gmail.com>2008/7/30 昂哲王 <wanga...@gmail.com>:> 大伙有没有在arm linux 下玩玩python?
arm9、10 可以用 debian arm 的包。
debian linux 有 arm 版本,包含几乎全套软件。
你的系统里有没有libpython2.5.so.1.0?
有没有设PATH, LD_LIBRARY_PATH和PYTHONHOME环境变量?
看一下你的所有依赖的动态库是否能正确的找到。
你应该是哪里没有改对,你试图在你的pc上执行arm的程序了。
再好好看看所有运行./$(BUILDPYTHON)的地方,都改成你本地的python就好了。
我在make的时候出现: 无法执行二进制文件
不知道是什么原因,
case $MAKEFLAGS in \
*-s*) LD_LIBRARY_PATH=/home/border/tools/Python-2.5.2/build.arm: CC='arm_v5t_le-gcc' LDSHARED='arm_v5t_le-gcc -shared' OPT='-DNDEBUG -fwrapv -O2 -Wall -Wstrict-prototypes' python -E ../setup.py -q build;; \
*) LD_LIBRARY_PATH=/home/border/tools/Python-2.5.2/build.arm: CC='arm_v5t_le-gcc' LDSHARED='arm_v5t_le-gcc -shared' OPT='-DNDEBUG -fwrapv -O2 -Wall -Wstrict-prototypes' python -E ../setup.py build;; \
esac
/bin/sh: line 2: ./python:无法执行二进制文件
make: *** [sharedmods] 错误 1262008/7/31 Leo Jay <python...@gmail.com>
2008/7/31 昂哲王 <wanga...@gmail.com>:
> 不好意思,按照你的方法编译应该是可以了,但是应该怎么部署在arm?,我直接copy后,运行python,加载libpython2.5.so.1.0
> 失败。
>
--
你应该是哪里没有改对,你试图在你的pc上执行arm的程序了。
再好好看看所有运行./$(BUILDPYTHON)的地方,都改成你本地的python就好了。
恭喜恭喜啊。
只是,你为什么使用2.4b1版本啊?怎么不用2.5.2?
我记得应该是都要替换的。在本机上显然不能运行刚编译好的arm版本的python。
恭喜。
你再设一下PYTHONHOME环境变量就不会出warning了。
恭喜。
你再设一下PYTHONHOME环境变量就不会出warning了。
--
Best Regards,
Leo Jay
不客气。
先统一一下术语,HOST机是指arm,BUILD机是指x86,这个你没搞错吧?
我们什么时候在HOST机上执行过setup.py?整个编译过程都是在BUILD机器上执行的啊。
2008/7/31 Border <bor...@gmail.com>:
> 我在make的时候出现: 无法执行二进制文件
>
> 不知道是什么原因,
>
> case $MAKEFLAGS in \
> *-s*) LD_LIBRARY_PATH=/home/border/tools/Python-2.5.2/build.arm:
> CC='arm_v5t_le-gcc' LDSHARED='arm_v5t_le-gcc -shared' OPT='-DNDEBUG -fwrapv
> -O2 -Wall -Wstrict-prototypes' python -E ../setup.py -q build;; \
> *) LD_LIBRARY_PATH=/home/border/tools/Python-2.5.2/build.arm:
> CC='arm_v5t_le-gcc' LDSHARED='arm_v5t_le-gcc -shared' OPT='-DNDEBUG -fwrapv
> -O2 -Wall -Wstrict-prototypes' python -E ../setup.py build;; \
> esac
> /bin/sh: line 2: ./python:无法执行二进制文件
> make: *** [sharedmods] 错误 126
>
再好好看看所有运行./$(BUILDPYTHON)的地方,都改成你本地的python就好了。
--
Best Regards,
Leo Jay
platform: $(BUILDPYTHON)这个中的python是被./$(BUILDPYTHON)替换后的,这句话主要作什么的。
$(RUNSHARED) python -E -c 'import sys ; from distutils.util import get_platform ; print get_platform()+"-"+sys.version[0:3]' >platform
是的,原来的意思是使用新编译的python来做事情。但原本的Makefile里没有考虑到cross
compile时,新编译出来的python不能在build机器上调用的情况。
所以要把./$(BUILDPYTHON)去掉。改成调用build机器上已有的python。
> 如果不是的话:
>
> platform: $(BUILDPYTHON)
>
> $(RUNSHARED) python -E -c 'import sys ; from distutils.util import
> get_platform ; print get_platform()+"-"+sys.version[0:3]' >platform
>
> 这个中的python是被./$(BUILDPYTHON)替换后的,这句话主要作什么的。
>
> 谢谢。
>
--
Best Regards,
Leo Jay
果然我们的术语没有统一。
参见 http://en.wikipedia.org/wiki/Cross_compile :
The build platform is where the code is actually compiled. The host
platform is where the compiled code will execute. The target platform
usually only applies to compilers. It represents what type of object
code the package itself will produce (such as cross-compiling a
cross-compiler); otherwise the target platform setting is irrelevant.
For example, consider cross-compiling a video game that will run on a
Dreamcast. The machine where the game is compiled is the build
platform while the Dreamcast is the host platform.
而且你记不记得我们在cross compile软件的时候,都要加上一个参数: --host=arm-linux
显然这里arm-linux不是指我们的pc啊。
这是cross compile的概念,跟python是没关系的。
不管你的host写的是什么,一定是指你的运行平台arm,要是写编译平台i686,编译出来的东西一定不对。
而且,只有在cross comile一个cross compiler的时候,target才有意义,否则,target的设置没有意义。
这些,你看wikipedia里的定义就知道了
在技术方面,一般在没有找到特别有力的反面证据的话,我都认为wikipedia的是正确的。