6

64 ビット Ubuntu、Linux で 32 ビット UNIX システム向けのコードをコンパイルする際に問題が発生しています。何が問題なのか誰にも考えがありますか?

gcc main.o test.o render.o transform.o model.o vector.o color.o -o the_thing -lSDL
/usr/bin/ld: transform.o: undefined reference to symbol 'cos@@GLIBC_2.2.5'
//lib/x86_64-linux-gnu/libm.so.6: error adding symbols: DSO missing from command line
collect2: error: ld returned 1 exit status
4

2 に答える 2

5

libm数学関数を使用するコードを扱う場合もリンクする必要があります。

この回答から:

コードに数学関数 (exp、cos など) が含まれている場合は、数学ライブラリ libm.so にリンクする必要があります。これは、シリアル コンパイルと同様に、コンパイル コマンドの末尾に -lm を追加することで実行されます。

mpicc -o サンプル sample.c -lm

プラス

-lSDL を使用しているコンパイル行を見ました。SDL は C および C++ で動作するため、純粋な C を使用している場合は、次のようなデフォルトの数学 C ヘッダーを含める必要があります。

#include <math.h>

あなたは次のようなものを作ったと思います:

#include <cmath>

C++ を使用している場合は、C コンパイラを使用してコンパイルしないでくださいg++。代わりに使用してください。

于 2015-11-15T20:35:05.207 に答える