Компоновщик не находит библиотеки в / lib

[

] Это похоже на пару других ответов, но более переносимый, чем [] этот []. и гораздо проще, чем [] эта []: [

] [

sh -c 'stat "$0"; file "$0"' filename

] [

] или [

] [

sh -c 'stat "$1"; file "$1"' sh filename

] [

], в которой []sh [] присваивается []$0 [].  Хотя для ввода требуется еще три символа, эта (вторая) форма предпочтительнее потому что [] $0[] - это имя, которое вы даете этому встроенному сценарию.  Оно используется, например, в сообщениях об ошибках оболочкой для этого скрипта, например, когда файл []file[] или []stat[] не может быть найден или не может быть выполнен. по любой причине. [

] [


] [

] Если вы хотите сделать [

] [

stat filename1 filename2 filename3 …; file filename1 filename2 filename3

] [

] для произвольного количества файлов, сделайте [

] [

sh -c 'stat "$@"; file "$@"' sh filename1 filename2 filename3

] [

], что работает, потому что [] "$@" [] эквивалентно [] "$1" "$2" "$3" ...[].[

].

1
01.06.2015, 12:41
2 ответа

Прочитайте Руководство LD.SO (динамический линкер / погрузчик). Фактические пути поиска в основном определяются /etc/ld.so.cache (который скомпилирован из /etc/ld.so.conf ldconfig )) или встроенные пути в вашем двоичном LD.SO. Поэтому проверьте настройки платформы и как вы построили свой GLIBC.

Вы можете посмотреть подробную деятельность LD.SO, запустив любой двоичный с помощью ld_debug = libs , установленные в переменной среды.

$ LD_DEBUG=libs ls
     17441: find library=libselinux.so.1 [0]; searching
     17441:  search cache=/etc/ld.so.cache
     17441:   trying file=/lib/x86_64-linux-gnu/libselinux.so.1
     17441: 
     17441: find library=libacl.so.1 [0]; searching
     17441:  search cache=/etc/ld.so.cache
     17441:   trying file=/lib/x86_64-linux-gnu/libacl.so.1
     17441: 
     17441: find library=libc.so.6 [0]; searching
     17441:  search cache=/etc/ld.so.cache
     17441:   trying file=/lib/x86_64-linux-gnu/libc.so.6
     ...
2
27.01.2020, 23:37

Как быстрое исправление, добавьте , добавьте в переменную среды оболочки ld_library_path через .bashrc,

export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/lib

, а затем,

source /home/user/.bashrc
0
27.01.2020, 23:37

Теги

Похожие вопросы