TAO 1.6a - Как сделать библиотеки.a?
Я собрал TAO 1.6a, скачанный из OCI в AIX 5.3. Я был построен успешно. Однако я мог видеть только файлы.so в $ACE_ROOT/lib. Как построить его, чтобы получить.a файлы? Я построил версию 1.5a, и он дал мне файлы.a. Есть ли флаг марки? Пожалуйста, дайте ма образец.
Спасибо.
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 archivelibname.a sourcelibname"
$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.