After installing source compiled libraries on Linux, we need to enable the system to recognize them by default.
Assume that we have installed the library under the path /usr/local/aarch64_qt5.12.0
:
If dynamic library link configuration is not performed, the system will not be able to find the required *.so file, causing the software to fail to execute.
You can view dependencies by executing the ldd
command, for example:
pi@NanoPi-NEO-Plus2:~$ ldd untitled linux-vdso.so.1 => (0x0000ffffba839000) libQt5Widgets.so.5 => not found libQt5Gui.so.5 => not found libQt5Core.so.5 => not found libpthread.so.0 => /lib/aarch64-linux-gnu/libpthread.so.0 (0x0000ffffba7e2000) libstdc++.so.6 => /usr/lib/aarch64-linux-gnu/libstdc++.so.6 (0x0000ffffba653000) libm.so.6 => /lib/aarch64-linux-gnu/libm.so.6 (0x0000ffffba5a6000) libgcc_s.so.1 => /lib/aarch64-linux-gnu/libgcc_s.so.1 (0x0000ffffba585000) libc.so.6 => /lib/aarch64-linux-gnu/libc.so.6 (0x0000ffffba43e000) /lib/ld-linux-aarch64.so.1 (0x0000ffffba80e000)
The stupidest way is to copy the compiled corresponding so to /usr/lib or /lib. If there are many corresponding so, it will be a problem.
Setting method:
1) Create the dynamic library configuration file *.conf under the /etc/ld.so.conf.d path, for example:
sudo vim /etc/ld.so.conf.d/Qt5.conf
Add to the file:
/usr/local/aarch64_qt5.12.0/lib
2) Load dynamic library configuration
Execute command: sudo ldconfig
pi@NanoPi-NEO-Plus2:~$ ldd untitled linux-vdso.so.1 => (0x0000ffffa4b1a000) libQt5Widgets.so.5 => /usr/local/aarch64_qt5.12.0/lib/libQt5Widgets.so.5 (0x0000ffffa451d000) libQt5Gui.so.5 => /usr/local/aarch64_qt5.12.0/lib/libQt5Gui.so.5 (0x0000ffffa4039000) libQt5Core.so.5 => /usr/local/aarch64_qt5.12.0/lib/libQt5Core.so.5 (0x0000ffffa39ed000) libpthread.so.0 => /lib/aarch64-linux-gnu/libpthread.so.0 (0x0000ffffa39c1000) libstdc++.so.6 => /usr/lib/aarch64-linux-gnu/libstdc++.so.6 (0x0000ffffa3832000) libm.so.6 => /lib/aarch64-linux-gnu/libm.so.6 (0x0000ffffa3785000) libgcc_s.so.1 => /lib/aarch64-linux-gnu/libgcc_s.so.1 (0x0000ffffa3764000) libc.so.6 => /lib/aarch64-linux-gnu/libc.so.6 (0x0000ffffa361d000) libdl.so.2 => /lib/aarch64-linux-gnu/libdl.so.2 (0x0000ffffa360a000) /lib/ld-linux-aarch64.so.1 (0x0000ffffa4aef000)
When executing related programs, you do not need to switch to the specified directory to execute, and can be executed in any directory.
Setting method:
1. The current session takes effect temporarily: command line input export PATH=$PATH:/usr/local/aarch64_qt5.12.0/bin
2. Permanently valid for users: vi ~/.bashrc The last line input export PATH=$PATH:/usr/local/aarch64_qt5.12.0/bin
Make environment variables effective: source .bashrc
3. Global and permanent effect:
Add a path to $PATH in /etc/profile or /etc/bash.bashrc. If the names are the same, you need to put the new path in front of other paths.
export PATH=$PATH:/usr/local/aarch64_qt5.12.0/bin
Enable environment variables to take effect: source /etc/profile
pi@NanoPi-NEO-Plus2:~$ echo $PATH /usr/local/aarch64_qt5.12.0/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/
The above is the detailed content of Linux sets dynamic library paths and environment variables. For more information, please follow other related articles on the PHP Chinese website!