我在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
答案 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
输出它传递给链接器的命令行选项。