
Ubuntu日本語フォーラム

ログインしていません。
ubuntuの初心者です。どうすればいいのか分からなくて困っています。
libgtk2.0, libgtkglext などをインストールしてコンパイルしようと思ったところ、
以下のようなエラー文がでました。
/usr/bin/ld: /usr/lib/gcc/i686-linux-gnu/4.6.1/../../../i386-linux-gnu/libgtk-x11-2.0.so: undefined reference to symbol 'gdk_pixmap_new'
/usr/bin/ld: note: 'gdk_pixmap_new' is defined in DSO /usr/lib/gcc/i686-linux-gnu/4.6.1/../../../i386-linux-gnu/libgdk-x11-2.0.so so try adding it to the linker command line
/usr/lib/gcc/i686-linux-gnu/4.6.1/../../../i386-linux-gnu/libgdk-x11-2.0.so: could not read symbols: Invalid operation
collect2: ld はステータス 1 で終了しました
このエラーの解決方法を、なるべく詳しくご教授いただけると嬉しいです。
オフライン
supitun による投稿:
libgtk2.0, libgtkglext などをインストールしてコンパイルしようと思ったところ、
以下のようなエラー文がでました。
実行したコマンドなど(具体的に何を実行したのか)を明示すると、いいアドバイスを期待できます。
また、もし可能であれば、何をコンパイルしようとしたのかといった説明があると、より良いと思います。
supitun による投稿:
/usr/bin/ld: /usr/lib/gcc/i686-linux-gnu/4.6.1/../../../i386-linux-gnu/libgtk-x11-2.0.so: undefined reference to symbol 'gdk_pixmap_new'
/usr/bin/ld: note: 'gdk_pixmap_new' is defined in DSO /usr/lib/gcc/i686-linux-gnu/4.6.1/../../../i386-linux-gnu/libgdk-x11-2.0.so so try adding it to the linker command line
/usr/lib/gcc/i686-linux-gnu/4.6.1/../../../i386-linux-gnu/libgdk-x11-2.0.so: could not read symbols: Invalid operation
collect2: ld はステータス 1 で終了しました
エラーから推測するに、GTK+2ライブラリーとのリンクがうまく行えていないようですが、コンパイラーに、GTK+2ライブラリーとリンクするための引数を指定していますか?
GTK+2のリファレンスマニュアルを参考に、もう一度コマンドを確認してみてください。
http://developer.gnome.org/gtk/2.24/gtk-compiling.html
オフライン
vbkさん、お返事ありがとうございます。
実行したコマンドですが、
http://stat.scphys.kyoto-u.ac.jp/gls.html
のサイトにあるGLSというものを使おうとしました。サイトのやり方に沿って、
シェルスクリプトglsというものを作り、
$ gls ファイル名
でコンパイルしたところ先程のエラーがでました。シェルスクリプトglsの内容は以下のようなものです。
#!/bin/sh
if g++ -o $1 $1.cpp -I/usr/include/X11 -I/usr/local/include/ -I/sw/include `pkg-config --cflags gtk+-2.0 gtkglext-1.0` -L/usr/local/lib/ -L/sw/lib `pkg-config --libs gtk+-2.0 gtkglext-1.0` -lglut -lstat2 -lgls; then
echo "---------------------------"
echo " Complied !! "
echo "---------------------------"
else
echo "---------------------------"
echo " Error !! "
echo "---------------------------"
exit
fi
どうかよろしくお願いいたします。
オフライン
g++に下のフラグを追加するとコンパイルが通ると思います。
-Wl,--no-as-needed
このフラグについては下のスレッドでも簡単に説明しています。
https://forums.ubuntulinux.jp/viewtopic.php?id=13673
本当であれば、原因を細かく調べて最適な方法を見つけたほうがいいのでしょうけど。
オフライン
vbkさん、お返事ありがとうございます。
無事、コンパイルすることができました。
とても、助かりました。本当に有難うございます。
オフライン