main.c と logoff.c の 2 つのファイルで構成されるプロジェクトがあります。それらをコンパイルしようとすると、次のエラーが発生します。
gcc -c -g -Wall main.c
gcc -c -g -Wall logoff.c
gcc -o main -g -Wall main.o logoff.o
ld: duplicate symbol _logoff in logoff.o and main.o
logoff.c に logoff という名前の関数がありますが、main.c で「logoff」というテキストを検索しましたが、何も見つかりませんでした (関数はまだ呼び出されていません!)。
関数の名前を log_off に変更すると機能します。ファイルには 2 番目の関数があり、その名前も変更しない限り、同じエラーが発生します。
これが発生する理由はありますか?2 つの異なるシステムでこの問題が発生しています。関連する可能性のあることの 1 つは、別のプロジェクトで同じ logoff.c ファイルを使用したが、このファイルに接続されていないことです。