ਲਾਇਬ੍ਰੇਰੀ (ਕੰਪਿਊਟਿੰਗ)

thumb|ਲਾਇਬ੍ਰੇਰੀ ਕੰਪਿਊਟਿੰਗ
**ਲਾਇਬ੍ਰੇਰੀ ਕੰਪਿਊਟਿੰਗ** ਵਿੱਚ, ਇੱਕ ਲਾਇਬ੍ਰੇਰੀ ਸਰੋਤਾਂ ਦਾ ਇੱਕ ਸੰਗ੍ਰਹਿ ਹੈ ਜੋ ਸਾਫਟਵੇਅਰ ਵਿਕਾਸ ਦੌਰਾਨ ਇੱਕ ਕੰਪਿਊਟਰ ਪ੍ਰੋਗਰਾਮ ਨੂੰ ਲਾਗੂ ਕਰਨ ਲਈ ਵਰਤਿਆ ਜਾ ਸਕਦਾ ਹੈ। ਆਮ ਤੌਰ 'ਤੇ, ਇੱਕ ਲਾਇਬ੍ਰੇਰੀ ਵਿੱਚ ਐਗਜ਼ੀਕਿਊਟੇਬਲ ਕੋਡ ਹੁੰਦੇ ਹਨ ਜਿਵੇਂ ਕਿ ਕੰਪਾਇਲ ਕੀਤੇ ਫੰਕਸ਼ਨ ਅਤੇ ਕਲਾਸਾਂ, ਜਾਂ ਇੱਕ ਲਾਇਬ੍ਰੇਰੀ ਸਰੋਤ ਕੋਡ ਦਾ ਸੰਗ੍ਰਹਿ ਹੋ ਸਕਦੀ ਹੈ। ਇੱਕ ਸਰੋਤ ਲਾਇਬ੍ਰੇਰੀ ਵਿੱਚ ਚਿੱਤਰ ਅਤੇ ਟੈਕਸਟ ਵਰਗਾ ਡੇਟਾ ਹੋ ਸਕਦਾ ਹੈ।
ਇੱਕ ਲਾਇਬ੍ਰੇਰੀ ਨੂੰ ਕਈ, ਸੁਤੰਤਰ ਖਪਤਕਾਰਾਂ (ਪ੍ਰੋਗਰਾਮਾਂ ਅਤੇ ਹੋਰ ਲਾਇਬ੍ਰੇਰੀਆਂ) ਦੁਆਰਾ ਵਰਤਿਆ ਜਾ ਸਕਦਾ ਹੈ। ਇਹ ਇੱਕ ਪ੍ਰੋਗਰਾਮ ਵਿੱਚ ਪਰਿਭਾਸ਼ਿਤ ਸਰੋਤਾਂ ਤੋਂ ਵੱਖਰਾ ਹੈ ਜੋ ਆਮ ਤੌਰ 'ਤੇ ਸਿਰਫ ਉਸ ਪ੍ਰੋਗਰਾਮ ਦੁਆਰਾ ਵਰਤਿਆ ਜਾ ਸਕਦਾ ਹੈ। ਜਦੋਂ ਇੱਕ ਖਪਤਕਾਰ ਇੱਕ ਲਾਇਬ੍ਰੇਰੀ ਸਰੋਤ ਦੀ ਵਰਤੋਂ ਕਰਦਾ ਹੈ, ਤਾਂ ਇਹ ਲਾਇਬ੍ਰੇਰੀ ਦਾ ਮੁੱਲ ਪ੍ਰਾਪਤ ਕਰਦਾ ਹੈ ਬਿਨਾਂ ਇਸਨੂੰ ਖੁਦ ਲਾਗੂ ਕੀਤੇ। ਲਾਇਬ੍ਰੇਰੀਆਂ ਇੱਕ ਮਾਡਯੂਲਰ ਢੰਗ ਨਾਲ ਸਾਫਟਵੇਅਰ ਦੀ ਮੁੜ ਵਰਤੋਂ ਨੂੰ ਉਤਸ਼ਾਹਿਤ ਕਰਦੀਆਂ ਹਨ। ਲਾਇਬ੍ਰੇਰੀਆਂ ਦੂਜੀਆਂ ਲਾਇਬ੍ਰੇਰੀਆਂ ਦੀ ਵਰਤੋਂ ਕਰ ਸਕਦੀਆਂ ਹਨ ਜਿਸਦੇ ਨਤੀਜੇ ਵਜੋਂ ਇੱਕ ਪ੍ਰੋਗਰਾਮ ਵਿੱਚ ਲਾਇਬ੍ਰੇਰੀਆਂ ਦੀ ਲੜੀ ਹੁੰਦੀ ਹੈ।

ਜਦੋਂ ਇੱਕ ਲਾਇਬ੍ਰੇਰੀ ਦੀ ਵਰਤੋਂ ਕਰਨ ਵਾਲਾ ਕੋਡ ਲਿਖਦਾ ਹੈ, ਤਾਂ ਇੱਕ ਪ੍ਰੋਗਰਾਮਰ ਨੂੰ ਸਿਰਫ਼ ਇਹ ਜਾਣਨ ਦੀ ਜ਼ਰੂਰਤ ਹੁੰਦੀ ਹੈ ਕਿ ਇਸਨੂੰ ਕਿਵੇਂ ਵਰਤਣਾ ਹੈ - ਇਸਦੇ ਅੰਦਰੂਨੀ ਵੇਰਵਿਆਂ ਨੂੰ ਨਹੀਂ। ਉਦਾਹਰਨ ਲਈ, ਇੱਕ ਪ੍ਰੋਗਰਾਮ ਇੱਕ ਲਾਇਬ੍ਰੇਰੀ ਦੀ ਵਰਤੋਂ ਕਰ ਸਕਦਾ ਹੈ ਜੋ ਇੱਕ ਗੁੰਝਲਦਾਰ ਸਿਸਟਮ ਕਾਲ ਨੂੰ ਸੰਖੇਪ ਵਿੱਚ ਪੇਸ਼ ਕਰਦਾ ਹੈ ਤਾਂ ਜੋ ਪ੍ਰੋਗਰਾਮਰ ਸਿਸਟਮ ਦੀਆਂ ਪੇਚੀਦਗੀਆਂ ਨੂੰ ਸਿੱਖਣ ਲਈ ਸਮਾਂ ਬਿਤਾਏ ਬਿਨਾਂ ਸਿਸਟਮ ਵਿਸ਼ੇਸ਼ਤਾ ਦੀ ਵਰਤੋਂ ਕਰ ਸਕੇ।
## ਇਤਿਹਾਸ
ਕੰਪਿਊਟਰ ਲਾਇਬ੍ਰੇਰੀ ਦਾ ਵਿਚਾਰ ਚਾਰਲਸ ਬੈਬੇਜ ਦੁਆਰਾ ਬਣਾਏ ਗਏ ਪਹਿਲੇ ਕੰਪਿਊਟਰਾਂ ਤੋਂ ਸ਼ੁਰੂ ਹੋਇਆ ਸੀ। 1888 ਵਿੱਚ ਉਸਦੇ ਐਨਾਲਿਟੀਕਲ ਇੰਜਣ 'ਤੇ ਇੱਕ ਪੇਪਰ ਨੇ ਸੁਝਾਅ ਦਿੱਤਾ ਸੀ ਕਿ ਕੰਪਿਊਟਰ ਓਪਰੇਸ਼ਨਾਂ ਨੂੰ ਸੰਖਿਆਤਮਕ ਇਨਪੁਟ ਤੋਂ ਵੱਖਰੇ ਕਾਰਡਾਂ 'ਤੇ ਪੰਚ ਕੀਤਾ ਜਾ ਸਕਦਾ ਹੈ। ਜੇਕਰ ਇਹਨਾਂ ਓਪਰੇਸ਼ਨ ਪੰਚ ਕਾਰਡਾਂ ਨੂੰ ਮੁੜ ਵਰਤੋਂ ਲਈ ਸੁਰੱਖਿਅਤ ਕੀਤਾ ਜਾਂਦਾ ਹੈ ਤਾਂ "ਡਿਗਰੀਆਂ ਦੁਆਰਾ ਇੰਜਣ ਦੀ ਆਪਣੀ ਇੱਕ ਲਾਇਬ੍ਰੇਰੀ ਹੋਵੇਗੀ।"
thumb|EDSAC ਕੰਪਿਊਟਰ ਲਈ ਪੰਚਡ ਟੇਪ ਦੀਆਂ ਰੀਲਾਂ 'ਤੇ ਸਬਰੂਟੀਨ ਲਾਇਬ੍ਰੇਰੀ ਵਾਲੇ ਫਾਈਲਿੰਗ ਕੈਬਿਨੇਟ ਦੇ ਕੋਲ ਕੰਮ ਕਰ ਰਹੀ ਇੱਕ ਔਰਤ
1947 ਵਿੱਚ ਗੋਲਡਸਟਾਈਨ ਅਤੇ ਵੌਨ ਨਿਊਮੈਨ ਨੇ ਅੰਦਾਜ਼ਾ ਲਗਾਇਆ ਕਿ ਆਈ.ਏ.ਐਸਮਸ਼ੀਨ 'ਤੇ ਆਪਣੇ ਕੰਮ ਲਈ ਸਬਰੂਟੀਨਾਂ ਦੀ ਇੱਕ "ਲਾਇਬ੍ਰੇਰੀ" ਬਣਾਉਣਾ ਲਾਭਦਾਇਕ ਹੋਵੇਗਾ, ਇੱਕ ਸ਼ੁਰੂਆਤੀ ਕੰਪਿਊਟਰ ਜੋ ਉਸ ਸਮੇਂ ਅਜੇ ਕਾਰਜਸ਼ੀਲ ਨਹੀਂ ਸੀ। ਉਨ੍ਹਾਂ ਨੇ ਚੁੰਬਕੀ ਤਾਰ ਰਿਕਾਰਡਿੰਗਾਂ ਦੀ ਇੱਕ ਭੌਤਿਕ ਲਾਇਬ੍ਰੇਰੀ ਦੀ ਕਲਪਨਾ ਕੀਤੀ, ਜਿਸ ਵਿੱਚ ਹਰੇਕ ਤਾਰ ਮੁੜ ਵਰਤੋਂ ਯੋਗ ਕੰਪਿਊਟਰ ਕੋਡ ਨੂੰ ਸਟੋਰ ਕਰਦਾ ਸੀ।

## ਲਿੰਕ ਕਰਨਾ
ਲਿੰਕਿੰਗ (ਜਾਂ ਬਾਈਡਿੰਗ) ਪ੍ਰਕਿਰਿਆ ਸੰਰਚਿਤ ਲਾਇਬ੍ਰੇਰੀਆਂ ਸਮੇਤ ਵੱਖ-ਵੱਖ ਥਾਵਾਂ 'ਤੇ ਉਹਨਾਂ ਦੀ ਖੋਜ ਕਰਕੇ ਚਿੰਨ੍ਹਾਂ (ਜਾਂ ਲਿੰਕਾਂ) ਵਜੋਂ ਜਾਣੇ ਜਾਂਦੇ ਹਵਾਲਿਆਂ ਨੂੰ ਹੱਲ ਕਰਦੀ ਹੈ। ਜੇਕਰ ਇੱਕ ਲਿੰਕਰ (ਜਾਂ ਬਾਈਂਡਰ) ਇੱਕ ਚਿੰਨ੍ਹ ਨਹੀਂ ਲੱਭਦਾ, ਤਾਂ ਇਹ ਅਸਫਲ ਹੋ ਜਾਂਦਾ ਹੈ, ਪਰ ਕਈ ਮੈਚ ਅਸਫਲਤਾ ਦਾ ਕਾਰਨ ਬਣ ਸਕਦੇ ਹਨ ਜਾਂ ਨਹੀਂ ਵੀ ਹੋ ਸਕਦੇ ਹਨ। 
ਸਟੈਟਿਕ ਲਿੰਕਿੰਗ ਬਿਲਡ ਸਮੇਂ 'ਤੇ ਲਿੰਕਿੰਗ ਹੈ, ਇਸ ਤਰ੍ਹਾਂ ਕਿ ਲਾਇਬ੍ਰੇਰੀ ਐਗਜ਼ੀਕਿਊਟੇਬਲ ਕੋਡ ਪ੍ਰੋਗਰਾਮ ਵਿੱਚ ਸ਼ਾਮਲ ਹੋਵੇ। ਡਾਇਨਾਮਿਕ ਲਿੰਕਿੰਗ ਰਨ ਟਾਈਮ 'ਤੇ ਲਿੰਕਿੰਗ ਹੈ; ਇਸ ਵਿੱਚ ਪ੍ਰੋਗਰਾਮ ਨੂੰ ਉਸ ਜਾਣਕਾਰੀ ਨਾਲ ਬਣਾਉਣਾ ਸ਼ਾਮਲ ਹੈ ਜੋ ਡਾਇਨਾਮਿਕ ਲਿੰਕ ਲਾਇਬ੍ਰੇਰੀ (DLL) ਨਾਲ ਰਨ-ਟਾਈਮ ਲਿੰਕਿੰਗ ਦਾ ਸਮਰਥਨ ਕਰਦੀ ਹੈ। ਡਾਇਨਾਮਿਕ ਲਿੰਕਿੰਗ ਲਈ, ਰਨ ਟਾਈਮ 'ਤੇ ਪ੍ਰੋਗਰਾਮ ਲਈ ਇੱਕ ਅਨੁਕੂਲ DLL ਫਾਈਲ ਉਪਲਬਧ ਹੋਣੀ ਚਾਹੀਦੀ ਹੈ, ਪਰ ਸਟੈਟਿਕ ਲਿੰਕਿੰਗ ਲਈ, ਪ੍ਰੋਗਰਾਮ ਸਟੈਂਡਅਲੋਨ ਹੈ।
## ਸਥਾਨ ਬਦਲਣਾ
ਇੱਕ ਪ੍ਰੋਗਰਾਮ ਜਾਂ ਲਾਇਬ੍ਰੇਰੀ ਮੋਡੀਊਲ ਵਿੱਚ ਕੁਝ ਹਵਾਲੇ ਇੱਕ ਰਿਸ਼ਤੇਦਾਰ ਜਾਂ ਪ੍ਰਤੀਕਾਤਮਕ ਰੂਪ ਵਿੱਚ ਸਟੋਰ ਕੀਤੇ ਜਾਂਦੇ ਹਨ ਜਿਸਨੂੰ ਉਦੋਂ ਤੱਕ ਹੱਲ ਨਹੀਂ ਕੀਤਾ ਜਾ ਸਕਦਾ ਜਦੋਂ ਤੱਕ ਸਾਰੇ ਕੋਡ ਅਤੇ ਲਾਇਬ੍ਰੇਰੀਆਂ ਨੂੰ ਅੰਤਿਮ ਸਥਿਰ ਪਤੇ ਨਿਰਧਾਰਤ ਨਹੀਂ ਕੀਤੇ ਜਾਂਦੇ। ਰੀਲੋਕੇਸ਼ਨ ਇਹਨਾਂ ਹਵਾਲਿਆਂ ਨੂੰ ਐਡਜਸਟ ਕਰਨ ਦੀ ਪ੍ਰਕਿਰਿਆ ਹੈ, ਅਤੇ ਇਹ ਲਿੰਕਰ ਜਾਂ ਲੋਡਰ ਦੁਆਰਾ ਕੀਤੀ ਜਾਂਦੀ ਹੈ। ਆਮ ਤੌਰ 'ਤੇ, ਰੀਲੋਕੇਸ਼ਨ ਵਿਅਕਤੀਗਤ ਲਾਇਬ੍ਰੇਰੀਆਂ ਵਿੱਚ ਨਹੀਂ ਕੀਤੀ ਜਾ ਸਕਦੀ ਕਿਉਂਕਿ ਮੈਮੋਰੀ ਵਿੱਚ ਪਤੇ ਉਹਨਾਂ ਦੀ ਵਰਤੋਂ ਕਰਨ ਵਾਲੇ ਪ੍ਰੋਗਰਾਮ ਅਤੇ ਉਹਨਾਂ ਨਾਲ ਜੋੜੀਆਂ ਗਈਆਂ ਹੋਰ ਲਾਇਬ੍ਰੇਰੀਆਂ ਦੇ ਅਧਾਰ ਤੇ ਵੱਖ-ਵੱਖ ਹੋ ਸਕਦੇ ਹਨ। ਸਥਿਤੀ-ਸੁਤੰਤਰ ਕੋਡ ਸੰਪੂਰਨ ਪਤਿਆਂ ਦੇ ਹਵਾਲਿਆਂ ਤੋਂ ਬਚਦਾ ਹੈ ਅਤੇ ਇਸ ਲਈ ਰੀਲੋਕੇਸ਼ਨ ਦੀ ਲੋੜ ਨਹੀਂ ਹੁੰਦੀ ਹੈ।
## ਸ਼੍ਰੇਣੀਆਂ
* ਚੱਲਣਯੋਗ
* ਸਥਿਰ
* ਗਤੀਸ਼ੀਲ
* ਸਰੋਤ
* ਸਾਂਝਾ ਕੀਤਾ
* ਵਸਤੂ
* ਕਲਾਸ
* ਰਿਮੋਟ
* ਰਨਟਾਈਮ
* ਮਿਆਰੀ ਭਾਸ਼ਾ

* ਕੋਡ ਬਣਾਉਣਾ

ਸ਼੍ਰੇਣੀ: ਕੰਪਿਊਟਰ ਲਾਇਬ੍ਰੇਰੀ
ਸ਼੍ਰੇਣੀ: ਓਪਰੇਟਿੰਗ ਸਿਸਟਮ ਤਕਨਾਲੋਜੀ