从文档的描述来看,它们似乎做同样的事情,除了“并非所有系统”支持共享和“只有一些系统”支持符号(不清楚这些是否是同一组系统):
-shared 生成一个共享对象,然后可以将其与其他对象链接以形成可执行文件。并非所有系统都支持此选项。为了获得可预测的结果,您还必须在指定此选项时指定用于生成代码的同一组选项(-fpic、-fPIC 或模型子选项)。 [1]
-symbolic 在构建共享对象时绑定对全局符号的引用。警告任何未解析的引用(除非被链接编辑器选项 -Xlinker -z -Xlinker defs 覆盖)。只有少数系统支持此选项。
我怀疑区别在于“生成一个共享对象,然后可以将其与其他对象链接以形成可执行文件”部分,但这听起来像是任何库都适用的东西。这是否意味着生成的共享对象也可以静态链接?