gdbのコンパイルに関する注意事項:必ずきれいなbuildフォルダを使用してください.
2219 ワード
先週gdbの通知メールを受け取り、gdb 7.8はreleaseになったと言った.gdbの忠実なユーザーとして、自然と体験してみました.急いで次のバージョンをダウンロードしてbuildをしたら、最後のlink段階でエラーが発生しました.
gcc: unrecognized option `-rdynamic'
ld: warning: file/usr/local/lib/libiconv.so: attempted multiple inclusion of file
Undefined first referenced
symbol in file
observer_attach_exited cli-interp.o
observer_notify_signal_exited infrun.o
observer_attach_sync_execution_done cli-interp.o
observer_attach_command_error cli-interp.o
observer_notify_signal_received infrun.o
observer_attach_end_stepping_range cli-interp.o
observer_attach_no_history cli-interp.o
ptid_match remote.o
observer_notify_end_stepping_range infrun.o
observer_notify_exited infrun.o
observer_notify_no_history infrun.o
observer_attach_signal_exited cli-interp.o
observer_notify_command_error event-loop.o
observer_notify_sync_execution_done infrun.o
observer_attach_signal_received cli-interp.o
ld: fatal: symbol referencing errors. No output written to gdb
collect2: ld returned 1 exit status
Makefile:1334: recipe for target 'gdb' failed
make[2]: *** [gdb] Error 1
make[2]: Leaving directory '/export/home/nan/build_gdb/gdb'
Makefile:8667: recipe for target 'all-gdb' failed
make[1]: *** [all-gdb] Error 2
make[1]: Leaving directory '/export/home/nan/build_gdb'
Makefile:831: recipe for target 'all' failed
make: *** [all] Error 2
gdbのコンパイルプロセスはずっと最も簡単で、linkエラーは私が初めて出会った.私はまずgdbのIRCで議論して、それからまた自分でdebugして、コードファイルとスクリプトをチェックして、結果は最後に得た結論は:私のために使ったbuildディレクトリの前に7.7.1バージョンをコンパイルしたので、私はサボって、空を空けていないので、今7.8バージョンをコンパイルする時に問題があって、原因はlinkのですか7.7.1の目標ファイルですか.
最後に得た経験は、gdb(または他のソフトウェア)をコンパイルするときは、必ずきれいなbuildフォルダを用意しなければなりません.そうしないと、link段階で問題が発生したように、意外な問題が発生する可能性があります.
注意:buildフォルダはソースコードをきれいに保つために、通常はソースフォルダの外にbuildフォルダを新規作成し、すべてのconfigure、make操作などをこのbuildフォルダの下で行います.例:
gcc: unrecognized option `-rdynamic'
ld: warning: file/usr/local/lib/libiconv.so: attempted multiple inclusion of file
Undefined first referenced
symbol in file
observer_attach_exited cli-interp.o
observer_notify_signal_exited infrun.o
observer_attach_sync_execution_done cli-interp.o
observer_attach_command_error cli-interp.o
observer_notify_signal_received infrun.o
observer_attach_end_stepping_range cli-interp.o
observer_attach_no_history cli-interp.o
ptid_match remote.o
observer_notify_end_stepping_range infrun.o
observer_notify_exited infrun.o
observer_notify_no_history infrun.o
observer_attach_signal_exited cli-interp.o
observer_notify_command_error event-loop.o
observer_notify_sync_execution_done infrun.o
observer_attach_signal_received cli-interp.o
ld: fatal: symbol referencing errors. No output written to gdb
collect2: ld returned 1 exit status
Makefile:1334: recipe for target 'gdb' failed
make[2]: *** [gdb] Error 1
make[2]: Leaving directory '/export/home/nan/build_gdb/gdb'
Makefile:8667: recipe for target 'all-gdb' failed
make[1]: *** [all-gdb] Error 2
make[1]: Leaving directory '/export/home/nan/build_gdb'
Makefile:831: recipe for target 'all' failed
make: *** [all] Error 2
gdbのコンパイルプロセスはずっと最も簡単で、linkエラーは私が初めて出会った.私はまずgdbのIRCで議論して、それからまた自分でdebugして、コードファイルとスクリプトをチェックして、結果は最後に得た結論は:私のために使ったbuildディレクトリの前に7.7.1バージョンをコンパイルしたので、私はサボって、空を空けていないので、今7.8バージョンをコンパイルする時に問題があって、原因はlinkのですか7.7.1の目標ファイルですか.
最後に得た経験は、gdb(または他のソフトウェア)をコンパイルするときは、必ずきれいなbuildフォルダを用意しなければなりません.そうしないと、link段階で問題が発生したように、意外な問題が発生する可能性があります.
注意:buildフォルダはソースコードをきれいに保つために、通常はソースフォルダの外にbuildフォルダを新規作成し、すべてのconfigure、make操作などをこのbuildフォルダの下で行います.例:
mkdir build_gdb;
cd build_gdb;
../gdb-7.8/configure
make
make install