Как я могу перекомпилировать программу так, чтобы она не требовала установки LD_LIBRARY_PATH для выполнения?

На solaris сервере, где у меня нет администратора, я компилирую различное программное обеспечение и устанавливаю в $HOME/usr, и это является главным образом рабочим. Однако некоторые программы, которые я компилирую таким образом, зависят от libiconv, в котором я также установил $HOME/usr/lib. Эти программы не будут работать если я export LD_LIBRARY_PATH=$HOME/usr/lib. Если я не делаю этого, я получаю ошибку, такую как следующее:

ld.so.1: rsync: fatal: libiconv.so.2: open failed: No such file or directory

Это expecially плохо для rsync, потому что он не всегда работает в среде оболочки, таким образом, у меня даже нет опции использования LD_LIBRARY_PATH заставить его работать. Действительно ли возможно скомпилировать мои программы, таким образом, что я не должен устанавливать LD_LIBRARY_PATH чтобы они работали?

1
задан 04.11.2010, 22:53

1 ответ

Вы хотите искать rpath. С gcc Вы передаете -Wl,-rpath,/directory/with/library к компиляции/ссылке. Я думаю с компилятором Соляриса, которым был флаг -R/directory/with/library, но у меня нет машины Соляриса для сверений.

2
ответ дан 12.12.2019, 13:06

Теги

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