Почему я должен определить LD_LIBRARY_PATH с экспортом каждый раз, когда я запускаю свое приложение?

Использовать 16-значный десятичный разряд "% .16f"

String confidence = "95% confidence interval";
int width = confidence.length();
String f = "%-".concat(String.valueOf(width)).concat("s = ");
System.out.printf(f.concat("%.16f\n"), "mean", stats.mean());
System.out.printf(f.concat("%.16f\n"), "stddev", stats.stddev());
System.out.printf(f.concat("[%.16f, %.16f]"), confidence, stats.confidenceLo(), stats.confidenceHi());
41
задан sigjuice 30 March 2009 в 00:31
поделиться

5 ответов

Использовать

export LD_LIBRARY_PATH="/path/to/library/"

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

Попробовать -R/path/to/library/ отметьте, когда Вы свяжетесь, это заставит программу посмотреть в том каталоге, и Вы не должны будете устанавливать переменные среды.

Править: Похож -R Солярис только, и Вы находитесь на Linux.

Альтернативный путь состоял бы в том, чтобы добавить путь к /etc/ld.so.conf и выполненный ldconfig. Обратите внимание, что это - глобальное изменение, которое будет относиться ко всем динамично связанным двоичным файлам.

42
ответ дан user 27 November 2019 в 00:16
поделиться

Необходимо постараться не устанавливать LD_LIBRARY_PATH в Вашем .bashrc. См."Why LD_LIBRARY_PATH is bad"для получения дополнительной информации.

Используйте опцию компоновщика-rpath при соединении так, чтобы динамический компоновщик знал, где найти libsync.so во время времени выполнения.

gcc ... -Wl,-rpath /path/to/library -L/path/to/library -lsync -o sync_test

Править:

Иначе должен был бы использовать обертку как это

#!/bin/bash

LD_LIBRARY_PATH=/path/to/library sync_test "$@"

Если sync_test запускает любые другие программы, они могли бы закончить тем, что использовали освобождение в /path/to/library который может или не может быть предназначен.

44
ответ дан miller 27 November 2019 в 00:16
поделиться

Вы 'Экспортировали' в своем .bashrc?

export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:"/path/to/library"
10
ответ дан bedwyr 27 November 2019 в 00:16
поделиться

Что также можно сделать, если это - что-то, что Вы установили в своей системе, должен добавить каталог, который содержит общие библиотеки в Ваш/etc/ld.so.conf файл, или сделайте новый файл в/etc/ld.so.conf.d/

(Я и проверил RHEL5 и распределение Ubuntu, таким образом, я думаю, что это универсально для Linux),

ldconfig программа удостоверится, что они в масштабе всей системы включены.

Посмотрите следующую ссылку для получения дополнительной информации: www.dwheeler.com/secure-programs/Secure-Programs-HOWTO/dlls.html

2
ответ дан Roalt 27 November 2019 в 00:16
поделиться

Можно просто поместить это все на одну строку:

LD_LIBRARY_PATH="$LD_LIBRARY_PATH:/path/to/library" ./sync_test

Должен сделать вещи немного легче, даже если это не изменяет ничего фундаментального

10
ответ дан 27 November 2019 в 00:16
поделиться
Другие вопросы по тегам:

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