[ LUGOS ] error

Igor Kolar ike at email.si
Fri Aug 10 20:05:34 CEST 2001


Hi,

On Fri, Aug 10, 2001 at 05:55:25PM +0200, Nejc Novak wrote:
> Pri prevajanju programa dobim error:
> /usr/i386-slackware-linux/bin/ld: cannot find -lpython2.0 

Da, manjka ti knji¾nica libpython.so.2.0 (to je njeno t.i. kanonièno ime)
oz. je sistem ne najde. Kar naredi¹ najprej, je:

# /sbin/ldconfig -v | grep python

Da vidi¹, èe je name¹èena kaka pythonova knji¾nica. Æe ne najde absolutno niè,
pythona ni in¹taliranega. To je eden mnogih programskih jezikov, je opensource
in ga najde¹ na Slack in¹talacijskem disku. Verjetno kot binary; glede
in¹talacije res ne morem reèi, ker uporabljam RH. In¹taliraj paè, in to vse
pakete, ki imajo v sebi "python", torej developement tudi.

Èe pa se kaj izpi¹e, je python gori, knji¾nica pa tudi. Manjkajo pa ti ustrezne
simboliène povezave. Ko se je python in¹taliral, je skopiral knji¾nice, ni
pa namestil ustreznih povezav. Torej, poi¹èi knji¾nico:

# locate <ime, ki ga vr¾e ldconfig -v>

Izpisalo bo direktorij. Skoèi tja, in pi¹i:

# ln -s <ime knji¾nice> libpython.so
# ldconfig (to lekar ni nujno, po¾eni vseeno)

Tako naj bi vsaj bilo na RedHatu; tako pi¹e tudi v Program-library-HOWTO, ki ti

-> http://www.linuxdoc.org/HOWTO/Program-Library-HOWTO/index.html

je priporoèeno branje. Kak¹en sistem bli¾njic uporablja slack, ne vem; morda
lahko kdo drugi pove. Jure?

Morda vseeno malo o knji¾nicah; upam, da ne bo kaj preveè napak, ker mi gcc ni
domaè compiler: uprabljam javac, ki ga zanima samo in le CLASSPATH. Torej:

V linuxu sta dve vrsti knji¾nic: statièna (konènica .a) in dinamièna
(.so.version). Name¹èene so lahko na razliènih lokacijah (na¹tete v
/etc/ld.so.conf -- ali odvisno od distribucije), nadzor nad njimi pa vr¹i
library deamon (ld). Ob zagonu ldconfig poi¹èe vse knji¾nice v naslovih, danih
v ld.so.conf. Knji¾nica je datoteka s t.i. kanoniènim imenom:

ime.so.major.minor.build , npr. skener.so.2.1.12

Ko ldconfig najde knji¾nico, izdela do nje symlink formata

libIme.so.major, npr libskener.so.2 (glej predpono lib in pripono so.2). Ta
bli¾nica omogoèa preprosto zamenjavo knji¾nic (paè menja¹ symlink in je).

Vendar: ko gcc i¹èe knji¾nico, ne porabi tega symlinka. Potreben je ¹e eden, in
sicer tak oblike:

libIme.so, tokrat libskener.so

ki ka¾e po definicijah na libskener.so.2. Te bli¾njice ldconfig **ni** dol¾an
izdelati, taka je paè programerska konvencija. Izdela jo make ob in¹talaciji
(make install) programa. Lahko tudi pozabi, kar je pogosto (programerji so lene
narave), takrat je to delo na uporabniku.

Toliko. Veè pa v prej omenjenem HOWTO-ju. Popravki -- bodo, vem, -- na lugos
lilsto.
-lp, ike



More information about the lugos-list mailing list