Thanks for your info, Florian! I updated my build script like this: pushd build/ ../configure \ --host=arm-linux-gnueabihf \ --prefix=/usr \ --enable-obsolete-nsl make make install DESTDIR=/tmp/armhf/libc6 Then I copied the files from the new location /tmp/armhf/libc6 to the deb folder. Then I built the deb file. When I tried to install the new deb on my board, I got the same error as yesterday. I checked. Even though I added "DESTDIR=/tmp/armhf/libc6" in "make install". The ld-2.28.so has the same size as the one I built yesterday. Again, I copied the ld-2.28.so from the "official" deb file, then rebuilt my deb - the rebuilt deb works for installation. I'm sure it's correct to add DESTDIR in "make install". But I guess there may be other reasons why ld-2.28.so doesn't work. Potentially I guess there is a chance that other "so" files may not work either because they don't get a chance to run yet. This ld-2.28.so shows error is just because the installation of the deb file triggers it. Is there any debug approach to narrow down the problem? By the way, here is how I build the deb file: - Create the folder structure - Copy files in the folders. Also copy or create soft links in the folder. - Strip binary files by using arm-linux-gnueabihf-strip. This will help reduce the size of the files. - Run this command to build the deb: dpkg-deb --build --root-owner-group deb_folder/ I used this approach to build libtinfo and libread packages. It seems to be working. I attach the deb file built by me. Not sure if you can receive it. Hopefully it's not blocked by the mail server. To extract the DEBIAN which has control file and post/pre scripts: dpkg -e ./libc6_2.28-0ubuntu1-my_armhf.deb.deb To extract file: dpkg-deb -xv libc6_2.28-0ubuntu1-my_armhf.deb.deb deb_folder/ If you have more info, let me know please. Thanks! On Wed, Jun 30, 2021 at 11:42 PM Florian Weimer wrote: > > * Kenny Bian via Libc-help: > > > We try to build libc6-2.28 from source code. Our board runs Ubuntu > > 18.04 in armhf architecture. We downloaded the source code from > > https://launchpad.net/ubuntu/+source/glibc/2.28-0ubuntu1. > > Here is what we did to create the deb package: > > 1. We build it by using these bash commands: > > /usr/bin/dpkg-source -x glibc_2.28-0ubuntu1.dsc libc6-2.28 > > pushd libc6-2.28/ > > mkdir build > > pushd build/ > > ../configure \ > > --host=arm-linux-gnueabihf \ > > --prefix=/tmp/armhf/libc6/usr \ > > --enable-obsolete-nsl > > make > > make install > > make install without a temporary DESTDIR is not supported. > Unfortunately the instructions do not make this clear. > > The issue is that make uses separate commands for installing files, and > half-way through the update, the system is in an inconsistent state and > further commands fail, and the installation is not able to complete as a > result. > > Using a temporary directory with DESTDIR and then rsync avoids the issue > (cp truncates the destination file, causing other issues). > > Thanks, > Florian >