TAO 1.6a - Как сделать библиотеки .a?

Я собрал TAO 1.6a, загруженный из OCI, в AIX 5.3. Меня успешно построили. Однако я мог видеть только файлы .so в $ACE_ROOT/lib. Как собрать его для получения файлов .a? Я собрал версию 1.5a, и она дала мне файлы .a. Есть ли флаг производителя? Пожалуйста, дайте образец.

Спасибо.


person Lwin Htoo Ko    schedule 02.08.2012    source источник


Ответы (1)


TAO1.5 и более ранние версии создают .a (файл архивной библиотеки) для каждой библиотеки. Например: libTAO.a, libTAO_CosNaming.a, libTAO_PortableServer.a, libTAO_AnyTypeCode.a

Я думаю, почему все библиотеки помещаются в архивные файлы, потому что имена библиотек такие же, как по умолчанию, "shr.o".

Дело в том, что все имена библиотек одинаковы, а отличаются только имена архивов.

Например:

Archive Name            Library Name
------------            ------------
libTAO.a                  shr.o
libTAO_CosNaming.a        shr.o
libTAO_PortableServer.a   shr.o
libTAO_AnyTypeCode.a      shr.o         

Но TAO1.6 и более новые версии создают библиотеки с разными именами. Например: libTAO.so, libTAO_CosNaming.so, libTAO_PortableServer.so, libTAO_AnyTypeCode.so

И эти библиотеки не помещаются в архивные файлы (.a). Вот почему я не могу найти файлы ".a" внутри $ACE_ROOT/lib.

Если вы хотите создать файлы .a для всех библиотек, выполните следующие действия. Я не знаю, есть ли более простые способы. Если это так, пожалуйста, поделитесь здесь.

В $ACE_ROOT/lib все файлы .so связаны символическими ссылками из исходных каталогов проекта.

Итак, узнайте, откуда. Я сделаю libACE.so в качестве примера.

$cd ACE_ROOT/lib
$ls -lrt libACE.so
--> libACE.so -> ../ace/libACE.so.5.6a_p13

хорошо, теперь я знаю источник файла и пойду туда.

$cd ../ace

создайте файл .a и поместите в него исходный код. использование - "ar -rv имя_архивной_библиотеки.a_имя_исходной_библиотеки"

$ar -rv libACE.a libACE.so.5.6a_p13

и вернитесь к $ACE_ROOT и символически свяжите файл .a

$cd $ACE_ROOT/lib
$ln -sf ../ace/libACE.a libACE.a

Это все. Но вы должны сделать эти шаги для всех библиотек, и это утомительно.

Редактировать: я просто не знал -brtl

Скомпилируйте проекты с параметром -brtl, и они будут хорошо работать с библиотеками .so.

person Lwin Htoo Ko    schedule 02.08.2012
comment
Версия 1.6a довольно старая, используйте TAO 2.1.3, а список рассылки tao-users — это гораздо лучшее место для вопросов, чем здесь, в stackoverflow. - person Johnny Willemsen; 02.08.2012
comment
В AIX нет никакой разницы между .so и .a. Просто условность. publib.boulder.ibm.com/infocenter/comphelp/v7v91/ - person CoreyStup; 02.08.2012
comment
@CoreyStup Ах, извините, я совершенно не читал часть вопроса об AIX. - person Brian Neal; 03.08.2012
comment
@JohnnyWillemsen Я скачал с www.theaceorb.com. Я скачал патч 13, выпущенный 6 января 2012 года. Так что я думаю, что это не очень старый. - person Lwin Htoo Ko; 03.08.2012
comment
Патч не старый, но исходная версия устарела, и в полной версии TAO с открытым исходным кодом многое было улучшено. Получите версию 2.1.3 с сайта download.dre.vanderbilt.edu, она намного стабильнее и проверено - person Johnny Willemsen; 04.08.2012
comment
Спасибо за совет. @ДжонниВиллемсен - person Lwin Htoo Ko; 06.08.2012
comment
Интересная статья – groups.google.com/forum/?fromgroups# !поиск/ - person Lwin Htoo Ko; 07.08.2012