vine-users ML アーカイブ



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

  • From: 竹村不二夫 <fujio@xxxxxxxxxxxxxxxx>
  • Subject: [vine-users:060124] Re: X11ライブラリ環境について
  • Date: Sat, 03 May 2003 01:03:16 +0900
竹村です。

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

ですべて解決しました。 ありがとうございます。

私の/etc/ld.so.confには
 /usr/X11R6/lib
 /usr/lib

の二つしかありませんでしたが一応X11は入っているようです。

基本的なことで恐縮なのですが/etc/ld.so.confと/usr/bin/ldとはどの様な関係にあ
るのでしょうか?


On 03.5.3 0:02 AM, "IKEDA Katsumi" <cork@xxxxxxxxxxxxx> wrote:

> いけだ@練馬です。
> 
> 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 を追加してみてはいかがでしょうか。
> 
> お役に立ちますように。

*****************************************************************
*                                                               *
*                   テクノチップス株式会社                    *
*                                                               *
*   220-0072 神奈川県横浜市西区浅間町 3-176-4 TEL045-324-6108   *
*                    fujio@xxxxxxxxxxxxxxxxx                    *
*                                                               *
*****************************************************************