Solaris 32 bit - сборка общего объекта с использованием gcc - PullRequest
0 голосов
/ 07 февраля 2011

Я пытаюсь создать общий объект (.so), используя gcc версии 3.4.3 для 32-битной системы Solaris. Я гуглил флаги, необходимые для создания общего объекта для соляриса. В некоторых постах я вижу, что флаг "-shared" не используется. Вместо этого используется флаг "-G". У меня сложилось впечатление, что флаг "-G" такой же, как и "-g", но кажется, что "-G" эквивалентен "-shared". Я прав?

Причина в том, что в системах SLES10 x86_64 для сборки .so требовался флаг "-shared".

Я попробовал следующее: -

LIB=-L/lib -L/usr/local/lib -L/usr/lib
gcc -m32 -G -fPIC -o myapi.so.1 myapi.o $(LIB)

Нужно ли изменить выше на: -

gcc -m32 -shared -fPIC -o myapi.so.1 myapi.o $(LIB)

Update1 Полезное предложение от @ user562374 использовать флаг -shared.

Если общий объект, созданный с использованием -shared, развернут на машине Solaris с использованием другого компилятора и если он «статически» связан, это вызовет какие-либо проблемы? Когда я говорю «статически» связанный .so, я имею в виду, что общий объект связан с файлом make, а не с помощью «dlsym».

1 Ответ

1 голос
/ 07 февраля 2011
   -G num
       Put global and static objects less than or equal to num
       bytes into the small data or bss sections instead of the
       ...

Если это gcc, то это -shared, потому что -G имеет другое применение.

...