用arm-linux-gcc 3.4.6 交差编译zlib的问题

时间:2021-08-09 15:12:57
系统是UBUNTU 11.10
做毕设,要移植wvdial到开发板上
装好arm-linux-gcc 3.4.6了

需要安装zlib,用arm-linux-gcc编译

修改Makefile

         CC = arm-linux-gcc

         CPP=arm-linux-gcc -E

         AR=arm-linux-ar rc

         RANLIB=arm-linux-ranlib

进行make时出错
root@ubuntu:/home/dzg100011/Desktop/arm-linux-software/zlib-1.2.5# ./configure --prefix=/home/install
Checking for gcc...
Checking for shared library support...
Building shared library libz.so.1.2.5 with gcc.
Checking for off64_t... Yes.
Checking for fseeko... Yes.
Checking for unistd.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.
root@ubuntu:/home/dzg100011/Desktop/arm-linux-software/zlib-1.2.5# vi Makefile
root@ubuntu:/home/dzg100011/Desktop/arm-linux-software/zlib-1.2.5# vi Makefile
root@ubuntu:/home/dzg100011/Desktop/arm-linux-software/zlib-1.2.5# make
arm-linux-gcc -O3 -D_LARGEFILE64_SOURCE=1   -c -o example.o example.c
arm-linux-gcc -O3 -D_LARGEFILE64_SOURCE=1   -c -o adler32.o adler32.c
arm-linux-gcc -O3 -D_LARGEFILE64_SOURCE=1   -c -o compress.o compress.c
arm-linux-gcc -O3 -D_LARGEFILE64_SOURCE=1   -c -o crc32.o crc32.c
arm-linux-gcc -O3 -D_LARGEFILE64_SOURCE=1   -c -o deflate.o deflate.c
arm-linux-gcc -O3 -D_LARGEFILE64_SOURCE=1   -c -o gzclose.o gzclose.c
arm-linux-gcc -O3 -D_LARGEFILE64_SOURCE=1   -c -o gzlib.o gzlib.c
arm-linux-gcc -O3 -D_LARGEFILE64_SOURCE=1   -c -o gzread.o gzread.c
arm-linux-gcc -O3 -D_LARGEFILE64_SOURCE=1   -c -o gzwrite.o gzwrite.c
arm-linux-gcc -O3 -D_LARGEFILE64_SOURCE=1   -c -o infback.o infback.c
arm-linux-gcc -O3 -D_LARGEFILE64_SOURCE=1   -c -o inffast.o inffast.c
arm-linux-gcc -O3 -D_LARGEFILE64_SOURCE=1   -c -o inflate.o inflate.c
arm-linux-gcc -O3 -D_LARGEFILE64_SOURCE=1   -c -o inftrees.o inftrees.c
arm-linux-gcc -O3 -D_LARGEFILE64_SOURCE=1   -c -o trees.o trees.c
arm-linux-gcc -O3 -D_LARGEFILE64_SOURCE=1   -c -o uncompr.o uncompr.c
arm-linux-gcc -O3 -D_LARGEFILE64_SOURCE=1   -c -o zutil.o zutil.c
arm-linux-ar rc libz.a adler32.o compress.o crc32.o deflate.o gzclose.o gzlib.o gzread.o gzwrite.o infback.o inffast.o inflate.o inftrees.o trees.o uncompr.o zutil.o 
arm-linux-gcc -O3 -D_LARGEFILE64_SOURCE=1 -o example example.o -L. libz.a
arm-linux-gcc -O3 -D_LARGEFILE64_SOURCE=1   -c -o minigzip.o minigzip.c
arm-linux-gcc -O3 -D_LARGEFILE64_SOURCE=1 -o minigzip minigzip.o -L. libz.a
arm-linux-gcc -O3 -fPIC -D_LARGEFILE64_SOURCE=1 -DPIC -c -o objs/adler32.o adler32.c
arm-linux-gcc -O3 -fPIC -D_LARGEFILE64_SOURCE=1 -DPIC -c -o objs/compress.o compress.c
arm-linux-gcc -O3 -fPIC -D_LARGEFILE64_SOURCE=1 -DPIC -c -o objs/crc32.o crc32.c
arm-linux-gcc -O3 -fPIC -D_LARGEFILE64_SOURCE=1 -DPIC -c -o objs/deflate.o deflate.c
arm-linux-gcc -O3 -fPIC -D_LARGEFILE64_SOURCE=1 -DPIC -c -o objs/gzclose.o gzclose.c
arm-linux-gcc -O3 -fPIC -D_LARGEFILE64_SOURCE=1 -DPIC -c -o objs/gzlib.o gzlib.c
arm-linux-gcc -O3 -fPIC -D_LARGEFILE64_SOURCE=1 -DPIC -c -o objs/gzread.o gzread.c
arm-linux-gcc -O3 -fPIC -D_LARGEFILE64_SOURCE=1 -DPIC -c -o objs/gzwrite.o gzwrite.c
arm-linux-gcc -O3 -fPIC -D_LARGEFILE64_SOURCE=1 -DPIC -c -o objs/infback.o infback.c
arm-linux-gcc -O3 -fPIC -D_LARGEFILE64_SOURCE=1 -DPIC -c -o objs/inffast.o inffast.c
arm-linux-gcc -O3 -fPIC -D_LARGEFILE64_SOURCE=1 -DPIC -c -o objs/inflate.o inflate.c
arm-linux-gcc -O3 -fPIC -D_LARGEFILE64_SOURCE=1 -DPIC -c -o objs/inftrees.o inftrees.c
arm-linux-gcc -O3 -fPIC -D_LARGEFILE64_SOURCE=1 -DPIC -c -o objs/trees.o trees.c
arm-linux-gcc -O3 -fPIC -D_LARGEFILE64_SOURCE=1 -DPIC -c -o objs/uncompr.o uncompr.c
arm-linux-gcc -O3 -fPIC -D_LARGEFILE64_SOURCE=1 -DPIC -c -o objs/zutil.o zutil.c
gcc -shared -Wl,-soname,libz.so.1,--version-script,zlib.map -O3 -fPIC -D_LARGEFILE64_SOURCE=1 -o libz.so.1.2.5 adler32.lo compress.lo crc32.lo deflate.lo gzclose.lo gzlib.lo gzread.lo gzwrite.lo infback.lo inffast.lo inflate.lo inftrees.lo trees.lo uncompr.lo zutil.lo  -lc -L. libz.a
/usr/bin/ld: adler32.lo: Relocations in generic ELF (EM: 40)
adler32.lo: could not read symbols: File in wrong format

collect2: ld returned 1 exit status

找到usr/bin/ld

ld->ld.bfd

用vi打开,乱码

郁闷了,哪位大神帮看看啊,实在过不去了

5 个解决方案

#1


连接器没指定吧。应该用arm-linux-ld吧

#2


先make clean一下呢,是不是之前make过?

#3


修改Makefile中的
LDSHARED=arm-linux-gcc -shared -Wl,-soname,libz.so.1,--version-script,zlib.map

#4


--- zlib-1.2.5_2/Makefile 2013-03-26 09:57:28.710185181 +0800
+++ zlib-1.2.5/Makefile 2013-03-26 09:52:31.538197677 +0800
@@ -16,7 +16,7 @@
 # To install in $HOME instead of /usr/local, use:
 #    make install prefix=$HOME
 
-CC=gcc
+CC=arm-linux-gcc
 
 CFLAGS=-O3 -D_LARGEFILE64_SOURCE=1
 #CFLAGS=-O -DMAX_WBITS=14 -DMAX_MEM_LEVEL=7
@@ -27,8 +27,8 @@
 SFLAGS=-O3 -fPIC -D_LARGEFILE64_SOURCE=1
 LDFLAGS= -L. libz.a
 TEST_LDFLAGS=-L. libz.a
-LDSHARED=gcc -shared -Wl,-soname,libz.so.1,--version-script,zlib.map
-CPP=gcc -E
+LDSHARED=arm-linux-gcc -shared -Wl,-soname,libz.so.1,--version-script,zlib.map
+CPP=arm-linux-gcc -E

 
 STATICLIB=libz.a
 SHAREDLIB=libz.so
@@ -36,8 +36,8 @@
 SHAREDLIBM=libz.so.1
 LIBS=$(STATICLIB) $(SHAREDLIBV)
 
-AR=ar rc
-RANLIB=ranlib
+AR=arm-linux-ar rc
+RANLIB=arm-linux-ranlib

 LDCONFIG=ldconfig
 LDSHAREDLIBC=-lc
 TAR=tar

红色的都改了就没有问题了。

#5


3楼的方法 正解

#1


连接器没指定吧。应该用arm-linux-ld吧

#2


先make clean一下呢,是不是之前make过?

#3


修改Makefile中的
LDSHARED=arm-linux-gcc -shared -Wl,-soname,libz.so.1,--version-script,zlib.map

#4


--- zlib-1.2.5_2/Makefile 2013-03-26 09:57:28.710185181 +0800
+++ zlib-1.2.5/Makefile 2013-03-26 09:52:31.538197677 +0800
@@ -16,7 +16,7 @@
 # To install in $HOME instead of /usr/local, use:
 #    make install prefix=$HOME
 
-CC=gcc
+CC=arm-linux-gcc
 
 CFLAGS=-O3 -D_LARGEFILE64_SOURCE=1
 #CFLAGS=-O -DMAX_WBITS=14 -DMAX_MEM_LEVEL=7
@@ -27,8 +27,8 @@
 SFLAGS=-O3 -fPIC -D_LARGEFILE64_SOURCE=1
 LDFLAGS= -L. libz.a
 TEST_LDFLAGS=-L. libz.a
-LDSHARED=gcc -shared -Wl,-soname,libz.so.1,--version-script,zlib.map
-CPP=gcc -E
+LDSHARED=arm-linux-gcc -shared -Wl,-soname,libz.so.1,--version-script,zlib.map
+CPP=arm-linux-gcc -E

 
 STATICLIB=libz.a
 SHAREDLIB=libz.so
@@ -36,8 +36,8 @@
 SHAREDLIBM=libz.so.1
 LIBS=$(STATICLIB) $(SHAREDLIBV)
 
-AR=ar rc
-RANLIB=ranlib
+AR=arm-linux-ar rc
+RANLIB=arm-linux-ranlib

 LDCONFIG=ldconfig
 LDSHAREDLIBC=-lc
 TAR=tar

红色的都改了就没有问题了。

#5


3楼的方法 正解