在build 時不link 某些 libs

如果您覺得您的問題不屬於 debian desktop 或是 debian server 版的範圍內,請在這裡發問。

版主: mufa

在build 時不link 某些 libs

文章wsun013 » 週日 4月 23, 2006 6:16 pm

小弟在學校的電腦 (使用 debian)
有裝兩份 gtk2
一份比較舊的, 在 /usr/lib, 為學校裝的
另一份是小弟裝的, 在 ~/usr/lib
有用 LD_LIBRARY_PATH 與 CFLAGS/CXXFLAGS/CPPFLAGS
讓gcc/g++ 看的到自己裝的 gtk2
可是在linking time 時, 常常會將兩份一起link 在一起
導致reference 錯誤

學校的那一份沒有寫的權限
所以刪不了他

因此問題為
有什麼flag 可以禁止他去load 指定的lib 嗎?
eg 我要 ~/usr/lib/libgtk-x11-2.0.so 但是不要
/usr/lib/libgtk-x11-2.0.so
------BEGIN GEEK CODE BLOCK------
Version: 3.12
GE d->++ s: a-- C+++>++++ UL>++++ P>++++ L++>++++ E---- W+ N@ o K- w++(+)
O- M- V? PS+++(+) PE++(+) Y-- PGP- t>--- 5? X+++ R- tv-(--) b+ DI? D+ G e++>++++
h+(!) r++(%) y*>++++
-------END GEEK CODE BLOCK-------
頭像
wsun013
快樂的大學生
快樂的大學生
 
文章: 784
註冊時間: 週二 9月 14, 2004 12:12 pm
來自: 紐西蘭

文章yzcie » 週日 4月 23, 2006 6:37 pm

嗨, wsun013 兄,
您有沒有考慮過做一個 chroot 環境來編東西?
yzcie
可愛的小學生
可愛的小學生
 
文章: 65
註冊時間: 週三 1月 26, 2005 3:19 pm
來自: 台灣

文章企鵝狂 » 週一 4月 24, 2006 10:25 am

--with-freetype-config=PATH path to freetype-config
(e.g. /opt/bin/freetype-config)
--with-fribidi-config=PATH path to fribidi-config
(e.g. /opt/bin/fribidi-config)
--with-glib-config=PATH path to glib*-config (e.g. /opt/bin/glib-config)
--with-gtk-config=PATH path to gtk*-config (e.g. /opt/bin/gtk-config)
--with-sdl-config=PATH path to sdl*-config (e.g. /opt/bin/sdl-config)

不確定你是要編譯甚麼程式
不過mplayer有這些選項
可以指定你得gtk (--with-gtk-config=PATH) 裝在哪裡

看一下你程式./configure --help
http://news.bbc.co.uk/1/hi/world/asia-pacific/country_profiles/1285915.stm


Country profile: Taiwan
Map of Taiwan
Taiwan is the island which has for all practical purposes been independent for half a century, but which China regards as a rebel region that must be reunited with the mainland - by force if necessary.
企鵝狂
活潑的高中生
活潑的高中生
 
文章: 477
註冊時間: 週三 3月 31, 2004 11:13 am
來自: 台灣共和國

文章wsun013 » 週一 4月 24, 2006 11:50 am

嗨,
yzcie 兄的建議小弟之前有想過, 可是因為系統配給我們的容量大概總共 1G,
本身他沒有OO.O, 所以裝了自己的 -> 250MB, 還有一些有的沒的.
小弟用 DSL 的 image ~ 140MB 當作 chroot 用的 dir, 裝些 tool-chains, 再裝個 gtk/glib/atk/pango/cairo/xlibs....就也快 400mb 了同時在build 時也要空間...所以蠻難行的通的

企鵝狂 兄的方法我也試過了, 現在是在自己編 xfce, ./configure 沒有那些選項嘍.
------BEGIN GEEK CODE BLOCK------
Version: 3.12
GE d->++ s: a-- C+++>++++ UL>++++ P>++++ L++>++++ E---- W+ N@ o K- w++(+)
O- M- V? PS+++(+) PE++(+) Y-- PGP- t>--- 5? X+++ R- tv-(--) b+ DI? D+ G e++>++++
h+(!) r++(%) y*>++++
-------END GEEK CODE BLOCK-------
頭像
wsun013
快樂的大學生
快樂的大學生
 
文章: 784
註冊時間: 週二 9月 14, 2004 12:12 pm
來自: 紐西蘭

文章企鵝狂 » 週一 4月 24, 2006 12:23 pm

那...我猜啦...沒有抓下來看
xfce 是從PATH裡面去找gtk*-config
把你有gtk-config的路徑 放到PATH最前頭去?
http://news.bbc.co.uk/1/hi/world/asia-pacific/country_profiles/1285915.stm


Country profile: Taiwan
Map of Taiwan
Taiwan is the island which has for all practical purposes been independent for half a century, but which China regards as a rebel region that must be reunited with the mainland - by force if necessary.
企鵝狂
活潑的高中生
活潑的高中生
 
文章: 477
註冊時間: 週三 3月 31, 2004 11:13 am
來自: 台灣共和國

文章usoshrike » 週一 4月 24, 2006 12:36 pm

在 make 時加上 LIBRARY_PATH=~/usr/lib
# LIBRARY_PATH=~/usr/lib make
or
# make LDFLAGS=-L~/usr/lib

執行時加上 LD_LIBRARY_PATH=~/usr/lib
應該就可以了
usoshrike
 

文章wsun013 » 週一 4月 24, 2006 1:07 pm

usoshrike 兄, 小弟可以在compile 與 run-time 找的到 ~/usr/lib
問題是在 compile 時
~/usr/lib/libgtk-x11-2.0.so

/usr/lib/libgtk-x11-2.0.so
都被加入了, 因此才產生問題

所以我本來問的問題是怎麼樣屏敝 /usr/lib/libgtk-x11-2.0.so 嘍
如果我有誤解煩請指正, 因為已經夠亂了 @@
------BEGIN GEEK CODE BLOCK------
Version: 3.12
GE d->++ s: a-- C+++>++++ UL>++++ P>++++ L++>++++ E---- W+ N@ o K- w++(+)
O- M- V? PS+++(+) PE++(+) Y-- PGP- t>--- 5? X+++ R- tv-(--) b+ DI? D+ G e++>++++
h+(!) r++(%) y*>++++
-------END GEEK CODE BLOCK-------
頭像
wsun013
快樂的大學生
快樂的大學生
 
文章: 784
註冊時間: 週二 9月 14, 2004 12:12 pm
來自: 紐西蘭

文章usoshrike » 週一 4月 24, 2006 1:56 pm

我想受限於優先順序因素,只能
# make LDFLAGS=-L~/usr/lib

但也有可能要改 Makefile 的 LDFLAGS
因為有可能會被 Makefile 裡的設定所覆蓋掉。
usoshrike
 

文章yzcie » 週一 4月 24, 2006 2:44 pm

嗨, wsun013 兄,
不知道您有沒有 mount --bind / ~/chroot_dir 的權限.
如果有, 就把整個系統 bind 到 ~/chroot_dir 裡,
再把自己的 libgtk-x11-2.0.so 到 /usr/lib/libgtk-x11-2.0.so
這樣您就有一個跟原系統幾乎一模一樣的 chroot 而且可以用 bind 來暫換 lib 了.
(小弟不知道直接換掉會不會出什麼問題)

不知道這樣可行嗎?
yzcie
可愛的小學生
可愛的小學生
 
文章: 65
註冊時間: 週三 1月 26, 2005 3:19 pm
來自: 台灣

文章usoshrike » 週二 4月 25, 2006 10:28 am

我想應該也可以這樣
LDFLAGS=-L~/usr/lib ./configure
usoshrike
 

文章訪客 » 週二 4月 25, 2006 4:01 pm

try this:
http://fakechroot.alioth.debian.org/

不過如果 quota 不夠就沒輒了...
訪客
 


回到 debian misc

誰在線上

正在瀏覽這個版面的使用者:Google [Bot] 和 1 位訪客