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