链接器 – 找不到/lib/libc.so.6

前端之家收集整理的这篇文章主要介绍了链接器 – 找不到/lib/libc.so.6前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我正在交叉编译一个应用程序,但链接爆炸与它的错误

“cannot find /lib/libc.so.6”.

它应该使用的libc.so.6位于/home/work/worldcom/filesys/lib/libc.so.6.这里有什么问题?

linking libobj.so
arm-none-linux-gnueabi-g++ obj1.o obj2.o obj2.o  -o libobj.so -L/home/work/worldcom/filesys/usr -Wl,-O1 -Wl,-z,defs -Wl,--enable-new-dtags -Wl,--sort-common -Wl,--as-needed -Wl,--hash-style=both -L/home/work/worldcom/filesys -L/home/work/worldcom/filesys/lib -L/home/work/worldcom/filesys/usr/lib -lcurl -shared
/home/lishevita/armv5tel/arm-2009q3/bin/../lib/gcc/arm-none-linux-gnueabi/4.4.1/../../../../arm-none-linux-gnueabi/bin/ld: skipping incompatible /lib/libc.so.6 when searching for /lib/libc.so.6
/home/lishevita/armv5tel/arm-2009q3/bin/../lib/gcc/arm-none-linux-gnueabi/4.4.1/../../../../arm-none-linux-gnueabi/bin/ld: cannot find /lib/libc.so.6
collect2: ld returned 1 exit status<br />
make: *** [libobj.so] Error 1<br />

我的makefile是手写的(即不是由Autotools生成的).为了避免“你的Makefile被破坏”,这里有一些makefile的细节可能有助于澄清.

CROSS_COMPILE = arm-none-linux-gnueabi-  
SYSROOT = /home/work/worldcom/filesys/  
DESTDIR = /home/work/worldcom/filesys/  

RELEASE_CXXFLAGS = -Os  
DEBUG_CXXFLAGS = -O0 -gstabs  
PKGCONFIG=`env ROOT=/home/work/worldcom/filesys cross-pkg-config glib-2.0 libcurl --cflags`  

CC = $(CROSS_COMPILE)gcc  
CXX = $(CROSS_COMPILE)g++  
LD = $(CROSS_COMPILE)ld  
AR = $(CROSS_COMPILE)ar  

LDFLAGS = -Wl,--hash-style=both -L$(SYSROOT) -L$(SYSROOT)lib -L$(SYSROOT)usr -L$(SYSROOT)usr/lib -lcurl  

libobj.so: $(LIBOBJ_OBJS)  
        @echo linking $@  
        $(CXX) $^ -o $@ $(LDFLAGS) -shared $(PKG_LIBS)

当然,还有LIBOBJ_OBJS的定义和目标,但这些与问题无关.

你没有说明你正在使用的gcc版本,但是如果它是一个最近的版本(4.0.0及以上我认为)你应该尝试-sysroot标志到g / ld.将其指向Makefile中定义的$SYSROOT.

假设最近有足够的gcc版本,它会起作用.

希望这可以帮助,吉拉德

猜你在找的CentOS相关文章