Запитання з тегом «dynamic-linking»

В обчислювальній роботі динамічне з'єднання - це процес операційної системи (ОС), який завантажує (копії з постійної пам’яті в оперативну пам’ять) і посилає (заповнює таблиці стрибків і переміщує покажчики) спільні бібліотеки, необхідні виконуваному файлу під час виконання, тобто коли воно виконується.

4
Як працюють номери SO (спільний об’єкт)?
Мені відомо, що спільні об'єкти в Linux використовують "так числа", а саме, що різні версії спільного об'єкта отримують різні розширення, наприклад: example.so.1 example.so.2 Я розумію, що ідея полягає в тому, щоб мати два різних файли, щоб дві системи бібліотеки могли існувати в системі (на відміну від "DLL Hell" в Windows). …

4
Де виконувані файли шукають спільні об’єкти під час виконання?
Я розумію, як визначити включені спільні об'єкти під час з'єднання / компіляції. Однак мені все ще цікаво, як виконувані файли шукають спільний об'єкт ( *.soбібліотеки) під час виконання. Наприклад, мої додатки a.outвикликають функції, визначені в lib.soбібліотеці. Після складання я переходжу lib.soдо нового каталогу в моєму $HOME. Як я можу сказати …

2
Отримання повідомлення "Не знайдено" під час запуску 32-розрядного двійкового файлу в 64-бітній системі
У мене зараз дивна проблема щодо debian (wheezy / amd64). Я створив chroot для встановлення сервера (я не можу детальніше про нього дати, вибачте). Назвемо його шлях /chr_path/. Щоб зробити це просто, я ініціалізував цей chroot за допомогою програми debootstrap (також wheezy / amd64). Здавалося, все працює добре в chroot, …


5
Який системний виклик використовується для завантаження бібліотек в Linux?
У straceвисновках шляхи до бібліотек, до яких виконується виклик, знаходяться у викликах open(). Це системний виклик, який використовують виконувані файли, які динамічно пов'язані? Про що dlopen()? open()це не дзвінок, як я здогадався, зіграє роль у виконанні програм.

3
Знайдіть, де визначений символ спільної бібліотеки, визначений у живій системі, / перелічіть усі символи, експортовані в систему
В основному, це два питання в одне - адже, якщо я можу перерахувати всі символи, експортовані в системі, разом із їх спільним бібліотечним шляхом, то я міг би просто grepвивести це. Щодо символів ядра, я думаю, це дещо простіше - адже ми завжди можемо cat /proc/kallsymsотримати список усіх символів тих …

4
Виконаний файл Linux виходить з ладу з "Файлом не знайдено", навіть якщо файл є в PATH
Я хочу запустити wineвиконуваний файл (версія 2.12), але я отримую таку помилку ( $= підказка оболонки): $ wine bash: /usr/bin/wine: No such file or directory $ /usr/bin/wine bash: /usr/bin/wine: No such file or directory $ cd /usr/bin $ ./wine bash: ./wine: No such file or directory Однак файл є: $ …

2
Як оновити спільну бібліотеку без збоїв?
Тут написано, що ви можете переписати виконуваний файл, і процес буде працювати нормально - він буде перечитаний, коли процес перезапуститься. Однак, коли я намагаюся замінити бінарний файл під час запущеного процесу (з scp, від dev до тестового сервера), він каже: "файл зайнятий". І якщо я заміню спільний файл бібліотеки (* …

1
Чому системи Unix / Linux не проходять через каталоги, поки не знайдуть потрібну версію зв'язаної бібліотеки?
У мене є двійковий виконуваний файл з назвою "альфа", для якого потрібна пов'язана бібліотека (libz.so.1.2.7), яка розміщується в /home/username/myproduct/lib/libz.so.1.2.7 Я експортую те ж саме до свого термінального екземпляра, перш ніж нерестувати свій бінарний виконуваний файл, виконавши наступну команду. export LD_LIBRARY_PATH=/home/username/myproduct/lib/:$LD_LIBRARY_PATH Тепер, коли я нерестую ще одну програму "bravo", яка вимагає …

9
Проблема запустити Java на Debian: "помилка під час завантаження спільних бібліотек: libjli.so"
Я намагаюся запустити Java: $ java -version java: error while loading shared libraries: libjli.so: cannot open shared object file: No such file or directory $ ldd /usr/lib/jvm/java-6-openjdk/jre/bin/java linux-gate.so.1 => (0xb779f000) libz.so.1 => /usr/lib/libz.so.1 (0xb7780000) libpthread.so.0 => /lib/i686/cmov/libpthread.so.0 (0xb7767000) libjli.so => /usr/lib/jvm/java-6-openjdk/jre/bin/../lib/i386/jli/libjli.so (0xb7762000) libdl.so.2 => /lib/i686/cmov/libdl.so.2 (0xb775e000) libc.so.6 => /lib/i686/cmov/libc.so.6 (0xb7603000) …

1
Встановлення двох glibc поряд з debian / ubuntu
Чи можливо встановити та використовувати дві різні версії glibc на одній машині. Де одна версія використовується лише для запуску застарілого програмного забезпечення, яке спирається на старі бінарні файли glibc? Чи можна це зробити за допомогою диспетчера пакунків (щось на кшталт "встановити цей пакет та його залежності до" /opt/old-glibc), а не …

3
Дізнайтеся, чи перебуває бібліотека
Якщо припустити, що я хочу перевірити, чи встановлена ​​бібліотека та чи є вона корисною програмою. Я можу використовувати, ldconfig -p | grep mylibщоб дізнатися, чи встановлено він у системі. але що робити, якщо про бібліотеку відомо лише через налаштування LD_LIBRARY_PATH? У цьому випадку програма може знайти бібліотеку, але ldconfigне буде. …


2
Чи можу я використовувати власний ld.so.cache?
ldconfig є два цікавих варіанти: -f conf Use conf instead of /etc/ld.so.conf. -C cache Use cache instead of /etc/ld.so.cache. Я спробував скопіювати /etc/ld.so.confсвій власний домашній каталог і відредагував його, щоб включити шляхи до моїх локальних бібліотек, наприклад, /home/syockit/local/usr/libтощо. І побіг ldconfig -f /home/syockit/ld.so.conf -C /home/syockit/ld.so.cache а згодом, щоб підтвердити, що …

1
Який порядок, у якому динамічний лінкер Linux шукає шляхи?
Це не дублікат, оскільки це стосується особливості, яку я помітив, коли використовую /etc/ld.so.conf. Щоб отримати шляхи, за якими динамічний лінк шукає бібліотеки, я запускаю команду ldconfig -v | grep -v "^"$'\t' | sed "s/:$//g". Коли в /etc/ld.so.confньому не вказано шляхів. Вихід з попередньої команди є /lib /usr/lib Я подумав, що …

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.