Fahimtar Laburaren Raba a cikin Linux


A cikin shirye-shirye, ɗakin karatu wani nau'in lamba ne da aka riga aka tattara waɗanda za'a iya sake amfani da su a cikin shirin. Dakunan karatu suna sauƙaƙa rayuwa ga masu shirye-shirye, ta yadda suna samar da ayyuka da za a sake amfani da su, na yau da kullun, azuzuwan, tsarin bayanai, da sauransu (wanda wani mawallafin ya rubuta), waɗanda za su iya amfani da su a cikin shirye-shiryen su.

Misali, idan kuna gina aikace-aikacen da ke buƙatar aiwatar da ayyukan lissafi, ba lallai ne ku ƙirƙiri sabon aikin lissafi don hakan ba, kawai kuna iya amfani da ayyukan da ke akwai a cikin ɗakunan karatu don wannan yaren shirye-shirye.

Misalai na ɗakunan karatu a cikin Linux sun haɗa da libc (madaidaicin ɗakin karatu na C) ko Glibc (Sigar GNU na daidaitaccen ɗakin karatu na C), libcurl (labaran canja wurin fayil na multiprotocol), libcrypt (laburaren da aka yi amfani da shi don ɓoyewa, hashing, da ɓoyewa a cikin C), da yawa. Kara.

Linux yana tallafawa nau'ikan ɗakunan karatu guda biyu, wato:

  • Dakunan karatu na tsaye - an ɗaure su da shirin a kididdige lokacin tattarawa.
  • Maɗaukaki ko ɗakunan karatu na haɗin gwiwa - ana loda su lokacin da aka ƙaddamar da shirin kuma a loda shi cikin ƙwaƙwalwar ajiya kuma ɗaure yana faruwa a lokacin gudu.

Za'a iya ƙara rarraba ɗakunan karatu masu ƙarfi ko masu rahusa zuwa:

  • Laburaren da ke da alaƙa mai ƙarfi - a nan an haɗa shirin tare da ɗakin karatu da aka raba kuma kernel ɗin yana loda ɗakin ɗakin karatu (idan ba a cikin ƙwaƙwalwar ajiya) yayin aiwatarwa.
  • Laburare masu ɗorewa - shirin yana ɗaukar cikakken iko ta ayyukan kira tare da ɗakin karatu.

Ana ba da sunayen ɗakunan karatu da aka raba ta hanyoyi biyu: sunan ɗakin karatu (aka soname) da filename (cikakkiyar hanyar fayil wacce ke adana lambar ɗakin karatu).

Misali, sunan so na libc shine libc.so.6: inda lib shine prefix, c shine sunan da aka kwatanta, don haka yana nufin abin da aka raba, kuma 6 shine sigar. Kuma sunan sa shine: /lib64/libc.so.6. Lura cewa soname haƙiƙance hanyar haɗi ce ta alama zuwa sunan fayil.

Ana loda ɗakunan karatu da aka haɗa ta ld.so (ko ld.so.x) da ld-linux.so (ko ld-linux.so.x), inda x shine sigar. A cikin Linux, /lib/ld-linux.so.x yana bincika kuma yana loda duk ɗakunan karatu da wani shiri ke amfani da shi.

Shirin zai iya kiran ɗakin karatu ta amfani da sunan ɗakin karatu ko sunan fayil, kuma hanyar ɗakin karatu tana adana kundayen adireshi inda za'a iya samun ɗakunan karatu a cikin tsarin fayil. Ta hanyar tsoho, ɗakunan karatu suna cikin /usr/local/lib, /usr/local/lib64, /usr/lib da /usr/lib64; Dakunan karatu na tsarin farawa suna cikin /lib da /lib64. Masu shirye-shirye na iya, duk da haka, shigar da ɗakunan karatu a wurare na al'ada.

Ana iya siffanta hanyar ɗakin karatu a cikin /etc/ld.so.conf fayil wanda zaka iya shirya tare da editan layin umarni.

# vi /etc/ld.so.conf 

Layin (s) a cikin wannan fayil yana ba da umarni ga kernel don loda fayil a /etc/ld.so.conf.d. Ta wannan hanyar, masu kula da fakiti ko masu tsara shirye-shirye na iya ƙara kundin adireshi na ɗakin karatu na al'ada zuwa jerin bincike.

Idan kun duba cikin /etc/ld.so.conf.d directory, za ku ga fayilolin .conf don wasu fakiti na gama-gari (kernel, mysql, da postgresql a wannan yanayin):

# ls /etc/ld.so.conf.d

kernel-2.6.32-358.18.1.el6.x86_64.conf  kernel-2.6.32-696.1.1.el6.x86_64.conf  mariadb-x86_64.conf
kernel-2.6.32-642.6.2.el6.x86_64.conf   kernel-2.6.32-696.6.3.el6.x86_64.conf  postgresql-pgdg-libs.conf

Idan kun kalli mariadb-x86_64.conf, zaku ga cikakkiyar hanya zuwa ɗakunan karatu na kunshin.

# cat mariadb-x86_64.conf

/usr/lib64/mysql

Hanyar da ke sama tana saita hanyar ɗakin karatu har abada. Don saita shi na ɗan lokaci, yi amfani da canjin yanayi na LD_LIBRARY_PATH akan layin umarni. Idan kuna son ci gaba da canje-canjen, to ƙara wannan layin a cikin fayil ɗin ƙaddamarwar harsashi /etc/profile (global) ko ~/.profile (takamaiman mai amfani).

# export LD_LIBRARY_PATH=/path/to/library/file

Bari yanzu mu kalli yadda ake mu'amala da ɗakunan karatu na tarayya. Don samun jerin duk abin dogaro na laburare mai raba don fayil na binary, zaku iya amfani da mai amfani ldd. Fitowar ldd yana cikin sigar:

library name =>  filename (some hexadecimal value)
OR
filename (some hexadecimal value)  #this is shown when library name can’t be read

Wannan umarnin yana nuna duk abin dogaro na laburare don umarnin ls.

# ldd /usr/bin/ls
OR
# ldd /bin/ls
	linux-vdso.so.1 =>  (0x00007ffebf9c2000)
	libselinux.so.1 => /lib64/libselinux.so.1 (0x0000003b71e00000)
	librt.so.1 => /lib64/librt.so.1 (0x0000003b71600000)
	libcap.so.2 => /lib64/libcap.so.2 (0x0000003b76a00000)
	libacl.so.1 => /lib64/libacl.so.1 (0x0000003b75e00000)
	libc.so.6 => /lib64/libc.so.6 (0x0000003b70600000)
	libdl.so.2 => /lib64/libdl.so.2 (0x0000003b70a00000)
	/lib64/ld-linux-x86-64.so.2 (0x0000561abfc09000)
	libpthread.so.0 => /lib64/libpthread.so.0 (0x0000003b70e00000)
	libattr.so.1 => /lib64/libattr.so.1 (0x0000003b75600000)

Saboda dakunan karatu na iya kasancewa a cikin kundayen adireshi daban-daban, bincika duk waɗannan kundayen adireshi lokacin da aka ƙaddamar da shirin ba zai yi tasiri sosai ba: wanda yana ɗaya daga cikin yiwuwar lahani na ɗakunan karatu masu ƙarfi. Don haka ana amfani da tsarin caching, wanda shirin ldconfig yayi.

Ta hanyar tsoho, ldconfig yana karanta abubuwan da ke cikin /etc/ld.so.conf, yana ƙirƙira madaidaitan hanyoyin haɗin yanar gizo masu dacewa a cikin kundayen adireshi masu ƙarfi, sannan ya rubuta cache zuwa /etc/ld.so.cache wanda sauran shirye-shiryen ke amfani da su cikin sauƙi. .

Wannan yana da mahimmanci musamman lokacin da kuka shigar da sabbin ɗakunan karatu da aka raba ko ƙirƙirar naku, ko ƙirƙirar sabbin kundayen adireshi. Kuna buƙatar gudanar da umarnin ldconfig don aiwatar da canje-canje.

# ldconfig
OR
# ldconfig -v 	#shows files and directories it works with

Bayan ƙirƙirar ɗakin karatu da aka raba, kuna buƙatar shigar da shi. Kuna iya ko dai motsa shi zuwa kowane daidaitattun kundayen adireshi da aka ambata a sama kuma ku gudanar da umarnin ldconfig.

A madadin, gudanar da umarni mai zuwa don ƙirƙirar hanyoyin haɗin kai daga sunan so zuwa sunan fayil:

# ldconfig -n /path/to/your/shared/libraries

Don farawa da ƙirƙirar ɗakunan karatu naku, duba wannan jagorar daga The Linux Documentation Project(TLDP).

Wannan ke nan a yanzu! A cikin wannan labarin, mun ba ku gabatarwa ga ɗakunan karatu da kuma bayyana ɗakunan karatu da aka raba, da yadda ake sarrafa su a cikin Linux. Idan kuna da wasu tambayoyi ko ƙarin ra'ayoyin da za ku raba, yi amfani da fam ɗin sharhin da ke ƙasa.