Предполагая, что вы используете компоновщик GNU, вам нужно указать опцию --whole-archive, чтобы вы могли получить все содержимое статического архива. Поскольку это опция компоновщика, вам потребуется -Wl, чтобы указать gcc передать его компоновщику:
g++ -std=c++98 -fpic -g -O1 -shared -o libsome.so -Wl,--whole-archive libsome.a
Если вы делали что-то более сложное, когда вам нужна вся библиотека, а только та часть поддержки библиотеки, которая нужна libsome, вы захотите отключить весь архив после того, как используете его в libsome:
... -Wl,--whole-archive libsome.a -Wl,--no-whole-archive libsupport.a
Если вы не используете компоновщик GNU, вам необходимо выяснить, поддерживает ли ваш компоновщик его и как он называется. На компоновщике Sun он называется -z allextract
и -z defaultextract
.