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