общая библиотека под Ubuntu - PullRequest
0 голосов
/ 14 апреля 2010

Я скомпилировал srp-2.1.2 под Ubuntu, используя make, он создал файл libsrp.a. Может ли кто-нибудь сказать мне, как я могу использовать libsrp.a в качестве разделяемой библиотеки?

спасибо

хорошо, когда я использую nm -D libsrp.a тогда у меня есть

c2 @ ubuntu: ~ / Desktop / srp-2.1.2 / libsrp $ nm -D libsrp.a

t_client.o: нм: t_client.o: без символов

пожалуйста, скажите мне, как я получу все символы.

спасибо

1 Ответ

0 голосов
/ 14 апреля 2010

Файл libsrp.a является статической библиотекой; общая библиотека будет называться что-то вроде libsrp.so. Здесь есть ответ, описывающий способ создания общей библиотеки из статической библиотеки (хотя я сам никогда этого не делал, поэтому не могу ручаться, что это работает - удачи!)

UPDATE:

Использование nm с аргументом -D запрашивает динамические символы (см. man nm) - в вопросе, который я связал с парнем, использовался -D, поскольку он вызывал nm на общая библиотека . Ваш libsrp.a является статической библиотекой, поэтому чтобы увидеть символы, вам нужно просто сделать

nm libsrp.a

Однако я не думаю, что вам нужно видеть символы, чтобы использовать ответ, объясняющий, как получить общую библиотеку; если ответ правильный, вам просто нужно вызвать gcc с правильными аргументами. Я думаю, что, получив общую библиотеку, вы можете использовать nm, чтобы увидеть, есть ли в ней символы, которые вы ожидаете; в этом случае вам понадобится аргумент -D:

nm -D libsrp.so
...