間違ったバージョンの関数が呼び出されてセグメンテーション違反が発生する問題をデバッグしようとしています。私がコンパイルしているコードは機械で生成されたもので、2 つの引数の複雑な乗算を行う「times」という関数が含まれています。このコードは、より高いレベルのオブジェクト ファイルにリンクされる前に、.o にコンパイルされます。
このコードを実行すると、segfaults が発生し、gdb は、同じ数の引数を取らない glibc のバージョンの「times」にあることを示します。このコードのどこにも '#include のインスタンスはありません。
times の名前を times1 に変更すると、問題が解決します。これは長期的な解決策ではありませんが、機械で生成されたコードの性質と、この関数の名前を常に手動で編集することは魅力的ではありません。
全体の混乱は -Wall でクリーニングをコンパイルするため、どこを見ればよいかわかりません。これを解決する方法についてのアイデアはありますか?
Compile chain:
gcc -Wall -I. -g --shared -o dpd.o -fPIC *.c (mahine generated code here)
gcc -g --std=c99 -c -fpic getData.c -I/usr/local/include -L/usr/local/lib -lmatio -I/usr/local/include/iverilog -I$(MATLAB)
gcc -g -shared -o getData.vpi getData.o $(MATLAB)/dpd.o -lvpi -lmatio -L/usr/local/lib