Я пытаюсь создать общий объект (.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».