Package: gcc-arm-linux-gnueabi Version: 4:8.3.0-1 When I compile a program with 
`arm-linux-gnueabi-gcc --sysroot /path/to/sysroot foo.c -o foo' , the output 
`foo' linked to the glibc from libc6-armel-cross, rather than that in 
`/path/to/sysroot' Steps to reproduce: 1. Prepare dummy.c: `int main() {return 
0;}' 2. Prepare a armel sysroot with OLDER glibc version, like Debian jessie: 
`mkdir /tmp/jessie && cdebootstrap-static -a armel --foreign --include 
libc6-dev jessie /tmp/jessie http://archive.debian.org/debian' 3. Compile. Here 
is a transcript: $ arm-linux-gnueabi-gcc --sysroot /tmp/jessie dummy.c -o dummy 
$ file dummy dummy: ELF 32-bit LSB pie executable, ARM, EABI5 version 1 (SYSV), 
dynamically linked, interpreter /lib/ld-linux.so.3, for GNU/Linux 3.2.0, 
BuildID[sha1]=a6c587dc6a3faa87e2b128af7c1ed208d0a9807a, not stripped $ The 
existance of `for GNU/Linux 3.2.0' is an evidence that `arm-linux-gnueabi-gcc' 
linked the executable to the glibc from libc6-armel-cross. I suppose that the 
`dummy' executable, should be linked to glibc in `/tmp/jessie'. A temporary 
solution that works for me: Just remove `libc6-armel-cross' and 
`libc6-dev-armel-cross', then `arm-linux-gnueabi-gcc' uses the glibc I 
expected. Here is a transcript: $ sudo dpkg -r --force-depends 
libc6-armel-cross libc6-dev-armel-cross dpkg: libc6-armel-cross: dependency 
problems, but removing anyway as you requested:  libubsan1-armel-cross depends 
on libc6-armel-cross (>= 2.28).  libstdc++6-armel-cross depends on 
libc6-armel-cross (>= 2.28).  libgomp1-armel-cross depends on 
libc6-armel-cross (>= 2.28).  libgcc1-armel-cross depends on 
libc6-armel-cross (>= 2.28).  libc6-dev-armel-cross depends on 
libc6-armel-cross (= 2.28-7cross1).  libatomic1-armel-cross depends on 
libc6-armel-cross (>= 2.28).  libasan5-armel-cross depends on 
libc6-armel-cross (>= 2.28). (Reading database ... 231756 files and 
directories currently installed.) Removing libc6-armel-cross (2.28-7cross1) ... 
dpkg: libc6-dev-armel-cross: dependency problems, but removing anyway as you 
requested:  libstdc++-8-dev-armel-cross depends on libc6-dev-armel-cross (>= 
2.13-5). Removing libc6-dev-armel-cross (2.28-7cross1) ... $ 
arm-linux-gnueabi-gcc --sysroot /tmp/jessie dummy.c -o dummy $ file dummy 
dummy: ELF 32-bit LSB pie executable, ARM, EABI5 version 1 (SYSV), dynamically 
linked, interpreter /lib/ld-linux.so.3, for GNU/Linux 2.6.32, 
BuildID[sha1]=ddaee43603d60ae8044d4850001b464cf10b433a, not stripped $ I am 
using Debian GNU/Linux 10(buster), kernel 4.19.0-8-amd64 and libc6-armel-cross 
2.28-7cross1 .

Reply via email to