2

私は大学の研究室のコンピューターでプロジェクトに取り組んでおり、自宅のラップトップで作業できるようにしたいと考えています。私のラップトップはubuntu 11.10を実行しています。

使った

sudo apt-get install gnome-core-devel build-essential libgtk2.0-dev libgtk2.0-doc devhelp

これですべて完了です。

それでも、プログラムをコンパイルしようとすると、たくさんの結果が得られます

[すべての gtk 関数] への未定義の参照

何が起きてる?私は何を間違っていますか?プログラムはラボ コンピューターで正常にコンパイルされます。makefile はこちらhttp://pastebin.com/H7Pi55NQ

4

1 に答える 1

2

ライブラリの引数は、リンクするファイルの後に来る必要があります。そうしないと、無視されます。

    $(CC) -o mainout main.o draw.o floyds.o simpletools.o graph.o tads.o bucket.o $(LIBS)

理由:U11.10に含まれる新しいバージョンのGCCは、--as-neededデフォルトでリンカーのスイッチを渡します。これは、コマンドラインでライブラリの前にあるものがライブラリを必要としない場合、そのライブラリは無視されることを意味します。--no-as-neededリンカスイッチを使用すると、この動作を変更できます。

于 2012-01-30T08:14:32.623 に答える