While cross-compiling, I encountered gawk: error while loading shared libraries: libreadline.so.4: cannot open shared object file: No such file or directory. The current build environment is x86_64, Ubuntu 20.04, the target runtime environment is mips32. The first thing I thought of when I encountered this problem was to install this lib.
On Ubuntu, we can use the apt-file program to find out where this library is installed. If you don’t have apt-file installed on your system, you need to install apt-file first, and then run it as follows:
$sudo apt-file update
$sudo apt-file search libreadline.so.4 #find no results
$sudo apt-file search libreadline.so #returns the following
lib32readline-dev: /usr/lib32/libreadline.so lib32readline8: /lib32/libreadline.so.8 lib32readline8: /lib32/libreadline.so.8.0 libreadline-dev: /usr/lib/x86_64-linux-gnu/libreadline.so libreadline-gplv2-dev: /usr/lib/x86_64-linux-gnu/libreadline.so libreadline5: /lib/x86_64-linux-gnu/libreadline.so.5 libreadline5: /lib/x86_64-linux-gnu/libreadline.so.5.2 libreadline5-dbg: /usr/lib/debug/libreadline.so.5 libreadline5-dbg: /usr/lib/debug/libreadline.so.5.2 libreadline8: /lib/x86_64-linux-gnu/libreadline.so.8 libreadline8: /lib/x86_64-linux-gnu/libreadline.so.8.0
libreadline.so.4 is a very old library and is no longer available on Ubuntu’s library sources, but try the later versions. Since the source code is developed and compiled on 32bit centos, choose the 32bit library: lib32readline8.
Run as below:
$sudo apt install lib32readline8
After installation, enter the /lib32 directory and you can see libreadline.so.8 and libreadline.so.8.0.
lrwxrwxrwx 1 root root 18 Feb 25 2020 /lib32/libreadline.so.8 -> libreadline.so.8.0
-rw-r--r-- 1 root root 311884 Feb 25 2020 /lib32/libreadline.so.8.0
Then run:
$ sudo ln -sv /lib32/libreadline.so.8.0 /lib32/libreadline.so.4
In $ls -l you can see that the symbolic link has been created.
However, running the cross-compilation task still reports the same error. After posting this issue on stack overflow, someone left a comment below reminding me to fix not libreadline.so.4, but the gawk version being too old.
I ran $gawk which prompted no such command, so
$sudo apt install gawk
Then Enter $gawk –version to check the other version, and return
GNU Awk 5.0.1, API: 2.0 (GNU MPFR 4.0.2, GNU MP 6.2.0)
Enter $whereis gawk to find its installation path:
gawk: /usr/bin/gawk /usr/lib/x86_64-linux-gnu/gawk /usr/share/man/man1/gawk.1.gz
The path is /usr/bin, and running the cross-compile job again still gives the same error, which means that there is another gawk installed in a directory that is called first when running the cross-compile. And this directory is not in the $PATH, or if it is, it is after /usr/bin.
I found the possible installation directory of gawk in the configuration file of the source code to be compiled, cd to that directory, run $gawk, and report the same error, and here it is. Run the following command:
$cp /usr/bin/gawk gawk
Run gawk in the current directory again to confirm that it has been updated to the latest version.
Run cross compilation again without error. The problem has been solved.
Read More:
- [Solved] error while loading shared libraries: libmpc.so.3: cannot open shared object file
- [Solved] mongod: error while loading shared libraries: libcrypto.so.1.1: cannot open shared object file: No s
- [Solved] error while loading shared libraries: libmysqlclient.so.20: cannot open shared object file: No such…
- error while loading shared libraries: libmetis.so [How to Solve]
- [Solved] ××: error while loading shared libraries: ××.so.19: cannot open shared object file: No such file or directory
- error while loading shared libraries: libz.so.1 [How to Solve]
- [Solved] error while loading shared libraries: libmysql.so.16
- Centos7.2 Install vscode Error: error while loading shared libraries: libxkbcommon.so.0: cannot open shared pro
- [Solved] error while loading shared libraries: libjson.so.0: cannot open shared object file: No such file or
- [Solved] Ubuntu Compile AOSP Error: error while loading shared libraries: libncurses.so.5: cannot open shared object file: No such file or directory
- Linux Ubuntu Django Error: uwsgi: error while loading shared libraries: libpcre.so.1
- [Solved] /usr/local/libexec/mecab/mecab-dict-index: error while loading shared libraries: libmecab.so.2: cannot open shared object file: No such file or directory
- How to Solve Ubuntu20.04 Compile Error:error while loading shared libraries: libncurses.so.5
- Linux Execution Error “service mysqld start“error while loading shared libraries: libaio.so.1“
- Error: loading shared libraries: cannot open shared object file: No such file or directory
- [Solved] Error reported using telnet command in Centos7: telnet: error while loading shared libraries: libtinfo.so.6
- error while loading shared libraries [How to Solve]
- Error while loading shared libraries [How to Solve]
- Error while loading error while loading shared libraries [How to Solve]
- [Solved] Centos8 openssh Compile Error: error while loading shared libraries