Rumah Operasi dan penyelenggaraan operasi dan penyelenggaraan linux Apakah kaitan antara perpustakaan dan fail pengepala di Linux?

Apakah kaitan antara perpustakaan dan fail pengepala di Linux?

Mar 16, 2023 am 10:27 AM
linux

Hubungan antara perpustakaan dan fail pengepala dalam Linux: terdapat pengisytiharan fungsi dalam fail pengepala, dan takrifan fungsi yang dilaksanakan dalam fail perpustakaan perlu diisytiharkan dalam fail pengepala. Semasa menulis program, anda perlu menggunakan fail pengepala untuk memberikan definisi pemalar dan pengisytiharan panggilan ke fungsi sistem dan fungsi perpustakaan dan perpustakaan ialah koleksi fungsi yang disusun, iaitu, koleksi fail sasaran ".o". Ia ditulis mengikut prinsip kebolehgunaan semula dan secara amnya terdiri daripada satu set fungsi yang saling berkaitan untuk melaksanakan tugas bersama.

Apakah kaitan antara perpustakaan dan fail pengepala di Linux?

Persekitaran pengendalian tutorial ini: sistem linux7.3, komputer Dell G3.

Dalam kod sumber aplikasi umum, terdapat pengisytiharan fungsi dalam fail pengepala, dan fail pustaka melaksanakan takrif fungsi dalam pustaka perlu diisytiharkan dalam fail pengepala.

1. Fail pengepala

Apabila menulis atur cara, kita perlu menggunakan fail pengepala untuk memberikan definisi pemalar dan fungsi sistem dan Perisytiharan perpustakaan daripada panggilan fungsi, fail pengepala ini terletak di /usr/include. Fail pengepala ini terletak dalam direktori yang boleh dicari secara automatik oleh pengkompil, seperti /usr/include/X11 sistem tetingkap X dan /usr/include/c++ GNU C++.

Apabila memanggil gcc, anda boleh menggunakan bendera -I untuk memasukkan fail pengepala yang disimpan dalam subdirektori atau lokasi bukan standard lain, seperti gcc -I/usr/openwin/include fred.c

2. Fail perpustakaan

Perpustakaan ialah koleksi fungsi yang disusun, iaitu koleksi fail sasaran.o Ia ditulis mengikut prinsip kebolehgunaan semula dan umumnya terdiri daripada a set interaktif Himpunan fungsi yang berkaitan untuk melaksanakan tugas biasa.

Fail perpustakaan sistem Linux standard biasanya disimpan dalam direktori /lib dan /usr/lib. Secara lalai, pemaut GCC hanya mencari pustaka bahasa C standard, yang merupakan isu sejarah. Kita mesti mematuhi nama fail perpustakaan dengan konvensyen tertentu dan menentukannya pada baris arahan.

Fail pustaka sentiasa bermula dengan lib, kemudian nyatakan jenis pustaka itu Bahagian terakhir .a mewakili pustaka fungsi statik dan .so mewakili pustaka fungsi kongsi (iaitu, pustaka. Pustaka pautan dinamik DLL di bawah Windows). Bendera

seperti gcc -o fred fred.c /usr/lib/libm.a atau gcc -o fred fred.c -lm
-L menambah laluan carian perpustakaan kepada pemaut, seperti gcc -o x11fred -L /usr/openwin/lib x11fred.c -1X11

2.1 Pustaka statik

Pustaka statik berakhir dengan .a, juga dipanggil fail arkib Apabila menjana program boleh laku, fail perpustakaan statik dipautkan dan fail boleh laku yang dihasilkan adalah lebih besar. . Boleh dijalankan tanpa fail perpustakaan statik.

2.1.1 Kaedah penjanaan

Mula-mula buat dua fail sumber fred.c dan bill.c

Apakah kaitan antara perpustakaan dan fail pengepala di Linux?

Apakah kaitan antara perpustakaan dan fail pengepala di Linux?

Kemudian gunakan gcc -c untuk menyusun dan menjana dua fail sasaran

Apakah kaitan antara perpustakaan dan fail pengepala di Linux?

Kemudian tulis pengepala untuk kedua-dua fail fungsi ini , buat pengisytiharan fungsi

Apakah kaitan antara perpustakaan dan fail pengepala di Linux?

dan kemudian masukkan fail pengepala dalam fungsi utama dan panggil salah satu fungsi perpustakaan

Apakah kaitan antara perpustakaan dan fail pengepala di Linux?

kemudian Susun fungsi utama dan paut main.o dengan bill.o yang dijana sebelum ini, yang boleh dilaksanakan dengan betul

Apakah kaitan antara perpustakaan dan fail pengepala di Linux?

Seterusnya kita jana fail perpustakaan, gunakan ar arkib untuk mencipta fail arkib dan Dengan menambah fail sasaran, ia menggabungkan beberapa fail berasingan ke dalam satu fail besar. ar crv libfoo.a bill.o fred.o Kemudian kita perlu menggunakan perintah ranlib untuk menjana jadual kandungan untuk perpustakaan fungsi.

Apakah kaitan antara perpustakaan dan fail pengepala di Linux?

Kemudian kami memautkan fail perpustakaan dengan fail program.o yang dijana sebelum ini dan pelaksanaan berjaya

Apakah kaitan antara perpustakaan dan fail pengepala di Linux?

Juga Gunakan -l untuk menentukan pustaka fungsi dan -L untuk menentukan lokasi bukan standard.

Apakah kaitan antara perpustakaan dan fail pengepala di Linux?

Kita boleh menggunakan perintah nm untuk melihat fungsi yang disertakan dalam fail sasaran, pustaka fungsi atau fail boleh laku , yang boleh digunakan untuk analisis pembongkaran. Apabila program dicipta, ia hanya mengandungi fungsi yang sebenarnya diperlukan dalam pustaka fungsi Walaupun terdapat pengisytiharan semua fungsi dalam fail pengepala, pemaut tidak akan memautkan kesemuanya.

Apakah kaitan antara perpustakaan dan fail pengepala di Linux?

1Apakah kaitan antara perpustakaan dan fail pengepala di Linux?

Perbandingan perpustakaan statik antara Linux dan Windows

1Apakah kaitan antara perpustakaan dan fail pengepala di Linux?

2.2 Pustaka kongsi

Apabila banyak aplikasi berjalan pada masa yang sama dan kesemuanya menggunakan fungsi daripada perpustakaan fungsi yang sama, akan terdapat banyak salinan fungsi yang sama dalam ingatan, pembaziran memori Dan storan luaran! ! Apabila program menggunakan pustaka fungsi, ia tidak lagi mengandungi kod fungsi semasa memaut, tetapi merujuk kepada kod kongsi yang boleh diakses semasa masa jalan Apabila atur cara yang disusun dimuatkan ke dalam memori untuk pelaksanaan, rujukan fungsi dihuraikan dan Panggilan dibuat. ke pustaka kongsi, dan jika perlu, pustaka kongsi dimuatkan ke dalam memori. Iaitu, sistem hanya boleh menyimpan satu salinan pustaka kongsi dalam ingatan untuk banyak aplikasi dipanggil, atau hanya satu salinan boleh disimpan dalam memori luaran. Selain itu, perpustakaan kongsi boleh dikemas kini secara bebas daripada aplikasi yang bergantung padanya, dan aplikasi tidak perlu dikompilasi semula.
Dalam sistem Linux, program (pemuat dinamik) yang bertanggungjawab untuk memuatkan perpustakaan kongsi dan fungsi penghuraian yang dirujuk oleh program klien ialah ld.so

2.2.1 Kaedah penjanaan

Gunakan fail perantaraan bill.o fred.o untuk menjana perpustakaan kongsi libfoo.so gcc -shared -fpic -o libfoo.so bill.o fred.o

1Apakah kaitan antara perpustakaan dan fail pengepala di Linux?

Selepas pustaka kongsi dijana, ia mesti diletakkan dalam direktori carian standard. Lokasi tambahan untuk mencari perpustakaan kongsi boleh dikonfigurasikan dalam fail /etc/ld.so.conf Selepas mengubah suai fail ini, laksanakan arahan ldconfig untuk memprosesnya. Kandungan
/etc/ld.so.conf ialah include /etc/ld.so.conf.d/*.conf, buat fail konfigurasi laluan perpustakaan pautan dinamik anda sendiri dalam direktori ini mylib.conf

1Apakah kaitan antara perpustakaan dan fail pengepala di Linux?

dan kemudian nyatakan Laluan carian

1Apakah kaitan antara perpustakaan dan fail pengepala di Linux?

Pautan untuk menjana fail boleh lakugcc -o main program.o -lfoo -L.

1Apakah kaitan antara perpustakaan dan fail pengepala di Linux?

ldd alat boleh digunakan untuk analisis Pustaka kongsi yang diperlukan untuk menjalankan fail boleh laku

1Apakah kaitan antara perpustakaan dan fail pengepala di Linux?

juga boleh ditentukan semasa menyusun kod sasaran Laluan carian .so perpustakaan ditentukan melalui parameter gcc -Wl,-rpath, seperti gcc main.cpp -lfoo -L. -Wl,-rpath=.-Wl, bermakna parameter berikut akan dihantar ke program pautan ld (kerana gcc akan memanggil ld secara automatik apabila menentukan berbilang laluan carian perpustakaan dinamik, gunakan titik bertindih ":" untuk memisahkan laluan.

1Apakah kaitan antara perpustakaan dan fail pengepala di Linux?

Cadangan berkaitan: "Tutorial Video Linux"

Atas ialah kandungan terperinci Apakah kaitan antara perpustakaan dan fail pengepala di Linux?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn

Alat AI Hot

Undresser.AI Undress

Undresser.AI Undress

Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover

AI Clothes Remover

Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool

Undress AI Tool

Gambar buka pakaian secara percuma

Clothoff.io

Clothoff.io

Penyingkiran pakaian AI

AI Hentai Generator

AI Hentai Generator

Menjana ai hentai secara percuma.

Artikel Panas

R.E.P.O. Kristal tenaga dijelaskan dan apa yang mereka lakukan (kristal kuning)
3 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Tetapan grafik terbaik
3 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Cara Memperbaiki Audio Jika anda tidak dapat mendengar sesiapa
3 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌
WWE 2K25: Cara Membuka Segala -galanya Di Myrise
3 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌

Alat panas

Notepad++7.3.1

Notepad++7.3.1

Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina

SublimeText3 versi Cina

Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1

Hantar Studio 13.0.1

Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6

Dreamweaver CS6

Alat pembangunan web visual

SublimeText3 versi Mac

SublimeText3 versi Mac

Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Bagaimana untuk menyelesaikan masalah kebenaran yang dihadapi semasa melihat versi Python di Terminal Linux? Bagaimana untuk menyelesaikan masalah kebenaran yang dihadapi semasa melihat versi Python di Terminal Linux? Apr 01, 2025 pm 05:09 PM

Penyelesaian kepada Isu Kebenaran Semasa Melihat Versi Python di Terminal Linux Apabila anda cuba melihat versi Python di Terminal Linux, masukkan Python ...

Mengapa ralat berlaku semasa memasang pelanjutan menggunakan PECL dalam persekitaran Docker? Bagaimana menyelesaikannya? Mengapa ralat berlaku semasa memasang pelanjutan menggunakan PECL dalam persekitaran Docker? Bagaimana menyelesaikannya? Apr 01, 2025 pm 03:06 PM

Punca dan penyelesaian untuk kesilapan Apabila menggunakan PECL untuk memasang sambungan dalam persekitaran Docker Apabila menggunakan persekitaran Docker, kami sering menemui beberapa sakit kepala ...

Bagaimana untuk mengintegrasikan perkhidmatan Node.js atau Python dengan cekap di bawah seni bina lampu? Bagaimana untuk mengintegrasikan perkhidmatan Node.js atau Python dengan cekap di bawah seni bina lampu? Apr 01, 2025 pm 02:48 PM

Ramai pemaju laman web menghadapi masalah mengintegrasikan perkhidmatan node.js atau python di bawah seni bina lampu: lampu sedia ada (Linux Apache MySQL PHP) Laman web seni bina memerlukan ...

Bagaimana untuk mengkonfigurasi tugas masa apscheduler sebagai perkhidmatan di macOS? Bagaimana untuk mengkonfigurasi tugas masa apscheduler sebagai perkhidmatan di macOS? Apr 01, 2025 pm 06:09 PM

Konfigurasikan tugas masa Apscheduler sebagai perkhidmatan di platform macOS, jika anda ingin mengkonfigurasi tugas masa Apscheduler sebagai perkhidmatan, sama dengan Ngin ...

Empat cara untuk melaksanakan multithreading dalam bahasa c Empat cara untuk melaksanakan multithreading dalam bahasa c Apr 03, 2025 pm 03:00 PM

Multithreading dalam bahasa dapat meningkatkan kecekapan program. Terdapat empat cara utama untuk melaksanakan multithreading dalam bahasa C: Buat proses bebas: Buat pelbagai proses berjalan secara bebas, setiap proses mempunyai ruang ingatan sendiri. Pseudo-Multithreading: Buat pelbagai aliran pelaksanaan dalam proses yang berkongsi ruang memori yang sama dan laksanakan secara bergantian. Perpustakaan multi-threaded: Gunakan perpustakaan berbilang threaded seperti PTHREADS untuk membuat dan mengurus benang, menyediakan fungsi operasi benang yang kaya. Coroutine: Pelaksanaan pelbagai threaded ringan yang membahagikan tugas menjadi subtask kecil dan melaksanakannya pada gilirannya.

Bolehkah penterjemah Python dipadam dalam sistem Linux? Bolehkah penterjemah Python dipadam dalam sistem Linux? Apr 02, 2025 am 07:00 AM

Mengenai masalah menghapuskan penterjemah python yang dilengkapi dengan sistem Linux, banyak pengagihan Linux akan memasang semula penterjemah python apabila dipasang, dan ia tidak menggunakan pengurus pakej ...

Cara Membuka Web.xml Cara Membuka Web.xml Apr 03, 2025 am 06:51 AM

Untuk membuka fail web.xml, anda boleh menggunakan kaedah berikut: Gunakan editor teks (seperti Notepad atau TextEdit) untuk mengedit arahan menggunakan persekitaran pembangunan bersepadu (seperti Eclipse atau NetBeans) (Windows: Notepad Web.xml; Mac/Linux: Open -A -A TextEdit Web.xml)

See all articles