vine-users ML アーカイブ



[vine-users:060122] Re: X11ライブラリ環境について

  • From: IKEDA Katsumi <cork@xxxxxxxxxxxxx>
  • Subject: [vine-users:060122] Re: X11ライブラリ環境について
  • Date: Sat, 03 May 2003 00:02:14 +0900 (JST)
いけだ@練馬です。

From: 竹村不二夫 <fujio@xxxxxxxxxxxxxxxx>
Subject: [vine-users:060121] X11ライブラリ環境について
Date: Fri, 02 May 2003 21:17:30 +0900

>  X11リンク環境について教えて下さい。 これはvine 2.6CR でPCATもPP
> Cも同じ状態です。
> 
>  以前のvine2.1CR(PCAT) の環境でX11を使用したプログラムを書きました。
>  (簡単なもの) これをvine 2.6CR でコンパイルすると環境が違うためかエラー
> になります。 どの様な関連になっているのか教えていただければありがたいです。
> 
> 質問1 (redhat−>vine2.1)
>  まずX11のリンク方法で以前にredhatでコンパイルしていたときは
>  -lX11 の記述でlibX11がリンクされていました。 Vineになってから
> /usr/bin/ld に登録がない! とエラーになります。 X11のパスはどの様に記
> 述するのでしょうか? またどこかにエイリアスをおいておけば良いのでしょうか?

私 (VineSeed こわれかけ) では、/etc/ld.so.conf に次のようにかかれて
います。

/usr/X11R6/lib
/usr/lib
/usr/local/lib
/usr/lib/sane
/usr/lib/qt-3.0.5/lib


コマンドラインから明示的にライブラリを検索するパスを指定するので
あれば、

  gcc -o foo foo.c -L/usr/X11R6/lib -lX11

となります。


> 質問2 (vine2.1->2.6)
>  vine2.1CRのレベルで、ライブラリを直接リンクしてみました。 コマンドは cc
> -o r....  /usr/X11R6/lib/libX11.a -lm と言う感じです。 これでエラーはなく
> リンクが出来ました。 がしかし vine2.6に同じソースを移行してコンパイルする
> と
> cc -o r myatoms.c viewfunctions.c robotmatrix.c robotview.c
> /usr/X11R6/lib/libX11.a -lm
> /usr/X11R6/lib/libX11.a(XlcDL.o): In function `try_both_dlsym':
> XlcDL.o(.text+0x111): undefined reference to `dlsym'
> XlcDL.o(.text+0x136): undefined reference to `dlsym'
> /usr/X11R6/lib/libX11.a(XlcDL.o): In function `open_object':
> XlcDL.o(.text+0x635): undefined reference to `dlopen'
> /usr/X11R6/lib/libX11.a(XlcDL.o): In function `close_object':
> XlcDL.o(.text+0x6a4): undefined reference to `dlclose'
> collect2: ld returned 1 exit status
> make: *** [r] エラー 1

man dlclose すると、

       If  this  program  were in a file named "foo.c", you would
       build the program with the following command:

              gcc -rdynamic -o foo foo.c -ldl

などと書いているので、-ldl を追加してみてはいかがでしょうか。

お役に立ちますように。

-- 
IKEDA Katsumi <cork@xxxxxxxxxxxxx>