关于“gcc:无法识别的选项`-rdynamic'”的问题

时间:2014-11-12 10:23:39

标签: c gcc solaris

我在gcc上使用Solaris 10来构建make程序,并获取以下信息:

gcc: unrecognized option `-rdynamic'

检查gcc文档中的rdynamic后,我得到以下解释:

-rdynamic
Pass the flag -export-dynamic to the ELF linker, on targets that support it. This instructs the linker to add all symbols, not only used ones, to the dynamic symbol table. This option is needed for some uses of dlopen or to allow obtaining backtraces from within a program. 

我的问题是:

(1)虽然gcc打印" gcc: unrecognized option -rdynamic",但构建仍然是成功的。这是gcc的默认行为吗?

(2)我更换" -rdynamic"用" -export-dynamic"在Makefile中,构建成功。这种替代会有副作用吗?

P.S。我的gcc信息:

bash-3.00# gcc -v
Reading specs from /usr/local/lib/gcc/i386-pc-solaris2.10/3.4.6/specs
Configured with: ../configure --with-as=/usr/ccs/bin/as --with-ld=/usr/ccs/bin/ld --enable-shared --enable-languages=c,c++,f77
Thread model: posix
gcc version 3.4.6 

1 个答案:

答案 0 :(得分:2)

您使用的是过时的gcc版本,但是您可以参考最新的文档。 gcc-3.4.6没有这样的链接器选项,请参阅https://gcc.gnu.org/onlinedocs/gcc-3.4.6/gcc/Link-Options.html

在链接时尝试使用-Wl,--export-dynamic选项。


  

我在Makefile中用-rdynamic替换-export-dynamic,构建成功。这种替代是否有任何副作用。

此选项未记录,它可能无效,您需要检查strace输出它传递给链接器的命令行选项。