[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Re: make



> Hello!

> On Sunday 10 January 2010 14:38:46 Aleksey Cheusov wrote:
 >> > Указывайте при сборке -Wl,-rpath,/usr/local/lib, а то, что ставится из
 >> > пакетов и знать не должно, что в /usr/local/lib могут быть библиотеки.
 >> 
 >> А вот у некоторых все пакеты собираются с rpath.

> Хм... интересный вопрос - а как правильно-то?

На мой взгляд правильно - это привязать НАМЕРТВО каждый экзешник со
всеми либами, которые ему нужны, т.е. гораздо жестче, чем -rpath и уж
куда лучше, чем /etc/ld.so.conf

Кажется, так сделано в HP-UX.
http://docs.hp.com/en/B2355-90689/ld.1.html

-lx
   ...
   If a program uses shared libraries, the dynamic loader
   /usr/lib/dld.sl for 32-bit or /usr/lib/pa20_64/dld.sl for 64-bit will
   attempt to load each library from the same directory in which it was
   found at link time (see the +s and +b options).

Каждая либа вроде бы хранит место, где она будет лежать после
инсталляции.  Между делом: кто-нибудь знает, где можно раздобыть экоунт
на более-менее современный HP-UX?

В MacOS-X вот есть опция линкера -install_name.

http://developer.apple.com/mac/library/DOCUMENTATION/Darwin/Reference/ManPages/man1/ld.1.html

Описана более ясно, чем в хпуксе.
-install_name name
   Sets an internal "install path" (LC_ID_DYLIB) in a dynamic
   library. Any clients linked against the library will record that path
   as the way dyld should locate this library.  If this option is not
   specified, then the -o path will be used.  This option is also called
   -dylib_install_name for compatibility.

Очень правильно сделано.

> По логике, в дебиане вообще не
> должно быть /usr/local, так как это противоречит всему принципу пакетного
> менеджмента
Нет. Никто не мешает с помощью пакетного мэнеджера поставить пакеты в
/usr/local. "Поставил админ только для этого хоста" не значит "поставил
руками".  Читай hier(7).

-- 
Best regards, Aleksey Cheusov.


Reply to: