为ARM交叉编译zlib

3

我尝试为arm-poky-linux-gnueabi交叉编译zlib,但在启动make时出现错误:

...:~/zlib-1.2.11$ AR=$HOST-ar CC=$HOST-gcc RANLIB=$HOST-ranlib ./configure --prefix=$HOME/zlibARM 
Checking for shared library support... 
Building shared library libz.so.1.2.11 with arm-poky-linux-gnueabi-gcc. 
Checking for size_t... Yes. 
Checking for off64_t... Yes. 
Checking for fseeko... Yes. 
Checking for strerror... Yes. 
Checking for unistd.h... Yes. 
Checking for stdarg.h... Yes. 
Checking whether to use vs[n]printf() or s[n]printf()... using vs[n]printf(). 
Checking for vsnprintf() in stdio.h... Yes. 
Checking for return value of vsnprintf()... Yes. 
Checking for attribute(visibility) support... Yes.

...:~/zlib-1.2.11$ make
arm-poky-linux-gnueabi-gcc -O3 -D_LARGEFILE64_SOURCE=1 -DHAVE_HIDDEN -I. -c -o example.o test/example.c
make: execvp: arm-poky-linux-gnueabi-gcc : Trop de niveaux de liens symboliques
Makefile:147: recipe for target 'example.o' failed
make: *** [example.o] Error 127

你能帮我吗?


当您执行arm-poky-linux-gnueabi-gcc --version时会发生什么? - Renaud Pacalet
2个回答

9

我知道这篇帖子已经发布了7个月,但是我能够成功地为ARM(在MacOS上)交叉编译zlib,采用如下配置命令:

CHOST=arm \
CC=<PATH_TO_CROSS_GCC> \
AR=<PATH_TO_CROSS_AR> \
RANLIB=<PATH_TO_CROSS_RANLIB> \
./configure \
--prefix=<INSTALL_PATH>

PATH_TO_CROSS_GCCPATH_TO_CROSS_ARPATH_TO_CROSS_GCC 分别指向交叉编译工具的路径(在我的情况下,我使用 crosstool-NG)。

对我而言,最终让它起作用的是指定 CHOST=arm,这使得它真正使用了指定的 ar

希望这能帮助到后面的某个人。


只需指定“CHOST=<target>”,CCAR等将自动配置为<target>前缀。供您参考。 - galaxy
@galaxy,我认为我的交叉编译工具设置有些“奇怪”,因为它不能自动获取这些位置,这就是为什么我不得不明确地定义它们的原因。 - bouwerp

1
这对我也起作用了。
# CROSS_PREFIX=<path-to-toolchain>- ./configure --prefix=<path-to-install>
# example:
CROSS_PREFIX=arm-unknown-linux-uclibcgnueabi- ./configure --prefix=~/rootfs/usr/local
make
make install

编辑:
我已经导出了我的工具链路径,所以我不需要编写完整的工具链路径。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接