Динамическое связывание AIX - PullRequest
       16

Динамическое связывание AIX

0 голосов
/ 06 сентября 2010

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

Я в AIX 6.1используя gcc 4.2.4.

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

Есть идеи о том, что я могу делать неправильно?

1 Ответ

0 голосов
/ 10 сентября 2010

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

...