GCC手册描述了-,它用于处理在GCC 3.4到9.2的稍有变化的C++ ABI中的C++名称篡改的变化,并且可能稍后。它有一个重要的警告:在支持强别名的目标上,g++通过定义符号时使用正确的损坏名称创建别名一个错误的损坏的名字。此开关指定要用于哪个ABI版本化名。但是,如何发现您的平台是否支持强别名并不是很明显。 最佳答案 最简单的方法是编写一个使用__attribute__创建别名的小程序,然后使用nm查看别名是否存在。下面是示例代码,它是经典“hello,world”程序的变体:/* strong_alias.c compile with 'gcc strong_alias.c' run ./a.out to check it works, and then run 'nm ./a.out' to check that strong_alias() has the same address as main() */#include <stdio.h>int main( int argc, char *argv[]){ printf( "Hello, World\n"); return 0;}int strong_alias( int argc, char *argv[]) __attribute__ (( alias ("main")));编译它并检查它是否运行,然后使用nm strong_alias查看它的符号表。以下是在CentOS 7上为x86-64编译的版本:nm ./a.out | egrep ' (main|strong_alias)'000000000040052d T main000000000040052d T strong_alias我们可以看到main和strong_alias具有相同的地址,因此是别名。关于linux - 如何确定我的Linux平台是否支持强别名?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/58116195/