2

I'm compiling c++ code and I'm trying to add in the -rdynamic option so I can print out a meaningful stack trace for debugging my c++ program, but clang throws back a warning saying "argument unused during compilation: '-rdynamic'".

As a test, on my system I've tried writing a simple c++ program and compiling it with -rdynamic and it worked no problem, but with this project it doesn't seem to go.

Any advice is much appricated

4

2 に答える 2

3

-rdynamicソースコードをリンクするのではなく、ソースコードをコンパイルするだけのときにフラグを使用している可能性があります。これはリンカのフラグなので、リンクするときだけ必要です。一部のバージョンの clang はそれを認識しない場合があります。その場合、clang に適切なオプションをリンカーに渡すように指示することができます。通常は次のとおりです。

 -Wl,--export-dynamic

だから、例えば

clang++ -rdynamic test.cpp

また

clang++ --Wl,--export-dynamic test.cpp

ただし、コンパイルとリンクを別々に行う場合は、リンク段階でのみ使用してください。

clang++ -c test.cpp
clang++ --Wl,--export-dynamic test.o 

(または最後のステップとして: clang++ -rdynamic test.o)

于 2014-12-10T14:54:06.497 に答える