2010-09-06 4 views
0

Я работаю над переносом библиотеки на AIX. Он работает на Solaris, Windows и Linux, но AIX дает мне головные боли. Я нахожусь в точке, где он строит и запускает, но у меня есть проблема с некоторыми из библиотек, в которые она связана. В идеале я хочу иметь возможность отправлять библиотеку, которая требует, чтобы среда выполнения c была доступна без каких-либо других зависимостей. На данный момент у меня проблема с libpthread, которую я вижу, является символической ссылкой на конкретную библиотеку потоков AIX. Моя проблема заключается в следующем: Если я не связываю pthread (мне не кажется, что в Solaris для той же базы кода), то я получаю undefined символы. Это нормально, я использую pthreads. Если я свяжу его, тогда он отлично работает, за исключением того, что любое вызывающее приложение также должно ссылаться на pthreads. Я действительно не понимаю, почему мое приложение-приложение, которое не имеет зависимости от pthread, должно ссылаться на него только потому, что оно вызывает библиотеку, которая ссылается на общий объект?Динамическое связывание AIX

Я нахожусь в AIX 6.1, используя gcc 4.2.4.

Я был бы в порядке с доставкой библиотеки, которая требует, чтобы pthreads присутствовали на пути к библиотеке (в идеале мы получили бы статическую версию), но я немного недоволен доставкой библиотеки, которая размещает ссылки на компоновщик на клиент.

Любые идеи о том, что я могу делать неправильно?

ответ

0

Кажется, что я собираюсь в кругах. Я удалил флаг -shared в компоновщике для решения более ранней проблемы и, конечно же, делает статическую библиотеку. Таким образом, поведение - это просто нормальное поведение в том смысле, что если вы зависеть от динамической библиотеки от статической, вы должны привязать ее как к своему приложению. Поэтому я поместил общий флаг назад, и теперь половина моих функций больше не доступна. Это объясняет проблему, которую я видел.

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