cht電腦資訊gcin
adm Find login register

gcin 1.4 linux 64 無法正確運作

guest
1 gcin 1.4 linux 64 無法正確運作
Promote 0 Bookmark 02008-05-28quote  

我使用 archlinux,以下列方式產生 gcin

     cd $startdir/src/$pkgname-$pkgver
    ./configure --prefix=/usr
    make || return 1
    make prefix=$startdir/pkg/usr \
         datadir=$startdir/pkg/usr/share \
         bindir=$startdir/pkg/usr/bin \
         libdir=$startdir/pkg/usr/lib \
         includedir=$startdir/pkg/usr/include \
         man1dir=$startdir/pkg/usr/man/man1 \
        install

發現 必須先 cd /usr/lib/gcin 才能執行 gcin

不然會找不到  gcin 的 library.

guest
3
Promote 0 Bookmark 02008-05-28quote  

The error message is: 

  gcin: error while loading shared libraries: gcin1.so: cannot open shared object file: No such file or directory

 

it works on linux 32 system. But can not work on linux 64 bit 

I think this is caused by  configure file or loading lib algorithm.

Or, do you know what *.c file is related to this problem?

 

I've already contact the archlinux's package maintainer, but as you see, there is nothing special configure as my previous post. 

eliu
4
Promote 0 Bookmark 02008-05-28quote  
guest
6
Promote 0 Bookmark 02008-05-28quote  

不是這樣的, archlinux 64 bit 上只有一個 /usr/lib 目錄. 

eliu
7
Promote 0 Bookmark 02008-05-28quote  

看一下

可能 LD_RUN_PATH 有錯 ? 

$ldd /usr/local/bin/gcin
        linux-gate.so.1 =>  (0xb7fe4000)
        gcin1.so => /usr/local/lib/gcin/gcin1.so (0xb7fd9000)
        gcin2.so => /usr/local/lib/gcin/gcin2.so (0xb7fd7000)

guest
8
Promote 0 Bookmark 02008-05-28quote  

ldd `which gcin`
    linux-vdso.so.1 =>  (0x00007fff413fe000)
    gcin1.so => not found
    gcin2.so => not found

 請問這要怎麼設呢? 要怎麼讓package maintainer可以包裝好呢?

eliu
9
Promote 0 Bookmark 02008-05-28quote  

gcin1.so 的 path 是由  LD_RUN_PATH 指定

如果弄不出來,可以考慮不要拆成 .so

Makefile 

gcin:   $(OBJS) $(IMdkitLIB) $(im-srv)
        LD_RUN_PATH=.:$(gcinlibdir) \
        $(CC) $(EXTRA_LDFLAGS) -o $@ $(OBJS) $(IMdkitLIB) $(im-srv) -lXtst $(LDFLAGS) -L/usr/X11R6/lib

guest
10
Promote 0 Bookmark 02008-05-28quote  

我想應該是這一行的指定在 configure 時沒效.

         libdir=$startdir/pkg/usr/lib

我看到  config.mak 裏面

   libdir=$(DESTDIR)/usr/lib64

但還是不知道改怎麼修正.(難道是要 report 給 autoconf 作者?) 

eliu
11
Promote 0 Bookmark 02008-05-28quote  
guest
12
Promote 0 Bookmark 02008-05-29quote  

難道不是 

./configure

產生的  libdir=$(DESTDIR)/usr/lib64 嗎?

guest
13 Arch64 gcin can
Promote 0 Bookmark 02008-06-20quote  

我找到問題, 但是, 這需要 gcin 作者修改. 測過 1.4.1 仍有此問題.

 即 -

參考 http://bugs.archlinux.org/task/7225 

在 configure 過後,

手工修改 config.mak

libdir=$(DESTDIR)/usr/lib64
變成

libdir=$(DESTDIR)/usr/lib

 
 因為我不懂 autoconf, 不知道底要改那裡才對.

主要原因是作者假設 arch 64 系統依定會有 /usr/lib64 目錄, 但是 ArchLinux x86_64 底下, 標榜只放純 64 bit 程式, 所以沒有那個目錄.

只有 /usr/lib, 另外, 要額外裝才有 /usr/lib32 

dlin
15 Arch64 gcin can
Promote 0 Bookmark 02008-06-20quote  
caleb

 

 

This is not upstream author's problem.

This is package maintainer's problem.

這應該是 gcin 作者要調整的, autoconf 就是要能夠適應各種環境.

因為設定的好, confingure 就應該能引用 /usr/lib/gcin, 而非 /usr/lib64/gcin 才對. 

dlin
17
Promote 0 Bookmark 02008-06-20quote  

不好意思.

我手動下 ./configure 時出現

 testing if you have QT_IM_MODULE dir:/usr/lib/qt4/plugins/lib64/inputmethods support

請問這是不是我少裝什麼呢? 還是並不一定需要. 我有裝 qt4. 

我大概知道問題出在那 configure script  

LIB='lib'
if [ -d /lib64 ]; then
LIB='lib64'
fi

因為 archlinux 也有 /lib64 目的是為了一些 binary distribution package 用. 所以

LIB=lib64

而最後

 libdir=$(DESTDIR)/usr/local/lib64

並非 archlinux 想要用的 

 libdir=$(DESTDIR)/usr/local/lib

我再去找 archlinux package maintainer 問問看... 謝啦! 

 

 

 

swyear
19
Promote 0 Bookmark 02008-06-20quote  

舉例說明

在 openSUSE qt3 inputmethods 目錄在

/usr/lib64/qt3/plugins/inputmethods

而非像 mandrava 在

/usr/lib/qt3/plugins/lib64/inputmethods

所以就自己改以符合發行版本的特性就好了

 --- configure.orig    2007-07-10 11:22:51.000000000 +0800
+++ configure    2007-08-29 00:52:07.000000000 +0800
@@ -114,7 +114,7 @@
 QT_IM='N'
 for i in qt3 qt4
 do
-  QT_IM_DIR=/usr/lib/$i/plugins/$LIB/inputmethods
+  QT_IM_DIR=/usr/$LIB/$i/plugins/inputmethods
   echo "testing if you have QT_IM_MODULE dir:$QT_IM_DIR support"
   if [ -d  $QT_IM_DIR ]; then
     QT_IM='Y'

本人已不在此站活動
20
Promote 0 Bookmark 02008-06-20quote  
dlin
因為 archlinux 也有 /lib64 目的是為了一些 binary distribution package 用. 所以

LIB=lib64

而最後

 libdir=$(DESTDIR)/usr/local/lib64

並非 archlinux 想要用的 

 libdir=$(DESTDIR)/usr/local/lib

我再去找 archlinux package maintainer 問問看... 謝啦!  

把 configure 以下的判斷式註解起來就行了:

#if [ -d /lib64 ]; then
#LIB='lib64'
#fi

cht電腦資訊gcin
adm Find login register
views:42969