2009-09-04 2 views
0

На HPUX Мне нужно использовать опцию + h link, чтобы получить разделяемые библиотеки 1.39.0, чтобы содержать правильные пути.Добавить функцию компоновщика для увеличения сборки на HPUX

-Wl,+h$(SPACE)-Wl,$(<[-1]:D=) 

(От http://www.nabble.com/HPUX-aCC:-Howto-avoid-building-boost-libraries-containing-absolute-library-path-references-when-calling-bjam-install-td17619511.html)

Я проверил, что это работает, взламывая файл gcc.jam Toolset:

796c796 
<  "$(CONFIG_COMMAND)" -L"$(LINKPATH)" -Wl,$(RPATH_OPTION:E=-R)$(SPACE)-Wl,"$(RPATH)" "$(.IMPLIB-COMMAND)$(<[1])" -o "$(<[-1])" $(HAVE_SONAME)-Wl,$(SONAME_OPTION)$(SPACE)-Wl,$(<[-1]:D=) -shared $(START-GROUP) "$(>)" "$(LIBRARIES)" $(FINDLIBS-ST-PFX) -l$(FINDLIBS-ST) $(FINDLIBS-SA-PFX) -l$(FINDLIBS-SA) $(END-GROUP) $(OPTIONS) $(USER_OPTIONS) 
--- 
>  "$(CONFIG_COMMAND)" -L"$(LINKPATH)" -Wl,+h$(SPACE)-Wl,$(<[-1]:D=) -Wl,$(RPATH_OPTION:E=-R)$(SPACE)-Wl,"$(RPATH)" "$(.IMPLIB-COMMAND)$(<[1])" -o "$(<[-1])" $(HAVE_SONAME)-Wl,$(SONAME_OPTION)$(SPACE)-Wl,$(<[-1]:D=) -shared $(START-GROUP) "$(>)" "$(LIBRARIES)" $(FINDLIBS-ST-PFX) -l$(FINDLIBS-ST) $(FINDLIBS-SA-PFX) -l$(FINDLIBS-SA) $(END-GROUP) $(OPTIONS) $(USER_OPTIONS) 

Но теперь я хочу постоянное решение, и я могу» t разобраться как.

Сначала я попытался установить bjam в разделе actions link.dll, но этот раздел содержит команды оболочки.

Затем я попытался добавить дополнительный раздел к переменной OPTIONS для этих целей. Но это никак не повлияло на ссылку.

Наконец-то я попытался создать отдельный набор инструментов как копию gcc.jam (hpuxgcc.jam), но я не мог заставить это работать вообще. Я предполагаю, что мне нужно изменить имена переменных, но синтаксис Jam превосходит то, что я понимаю.

Есть ли у кого-нибудь лучшее представление о том, как заставить это работать? Или я должен просто превратить взломанную версию в патч, который я запускаю до создания Boost? Неужели есть лучший способ?

ли угадать вопрос либо:

а) Как я (условно на платформе) добавить текст к команде компоновщика в gcc.jam

Или:

б) Как создать новый набор инструментов на основе gcc.jam?

Какой бы проще ...

ответ

1

Что -h вариант делать? Установлено ли это «сонай»? Если это так, обратите внимание на использование HAVE_SONAME и SONAME_OPTION в том же действии. Затем обратите внимание на блок кода в gcc.jam, где он установлен:

if [ os.name ] != NT && [ os.name ] != OSF && [ os.name ] != HPUX && [ os.name ] != AIX 
{ 
    # OSF does have an option called -soname but it does not seem to work as 
    # expected, therefore it has been disabled. 
    HAVE_SONAME = "" ; 
    SONAME_OPTION = -h ; 
} 

Вы можете настроить это в соответствии с вашей платформы.

Я предлагаю вам следить за этим на [email protected], что намного лучше подходит для вопросов Boost.Build, чем переполнение стека.

+0

Добавлен блок, который установил HAVE_SONAME и SONAME_OPTION на HP-UX, и это решило проблему. Благодарю. –

+0

Пожалуйста, отбросьте патч (svn diff output) на [email protected], чтобы он мог быть включен в официальную версию. Благодарю. –

Смежные вопросы