sekarang dari apa yang saya lihat perintahnya adalah
-l + filename
, misalnya nama file saya adalahdirectory/libtest.so
itu akan menjadi-ldirectory/libtest.so
Tidak, itu tidak benar. Seharusnya -Ldirectory -ltest
yaitu Anda menggunakan -L
untuk menambahkan direktori ke jalur pencarian tempat penaut akan mencari pustaka, dan Anda menyebutkan pustaka mana yang akan ditautkan dengan -l
, tetapi untuk menautkan ke libtest.so
atau libtest.a
Anda mengatakan -ltest
tanpa lib
awalan atau ekstensi file.
Anda bisa link dengan menamai file secara eksplisit, tanpa -L
atau -l
pilihan, yaitu hanya directory/libtest.so
, tetapi untuk perpustakaan dinamis itu hampir selalu merupakan hal yang salah untuk dilakukan, karena menyematkan jalur yang tepat itu ke dalam yang dapat dieksekusi, sehingga perpustakaan yang sama harus berada di tempat yang sama saat program dijalankan. Anda biasanya ingin menautkannya dengan nama (bukan jalur) sehingga pustaka dengan nama tersebut dapat digunakan dari lokasi mana pun pada waktu proses.
Ini adalah prosedur langkah demi langkah tentang cara membuat dan menautkan .so dengan file .cpp
-
Buat file .cpp yang ingin Anda konversi menjadi .so.
Contoh -
#include<stdio.h> int add(int a , int b) { return a+b;}
Simpan dengan nama add.cpp
-
Buat .so dengan perintah berikut
gcc -c -fPIC add.cpp -o add.o
Ini menciptakan libadd.so
-
Buat file .cpp yang akan menggunakan file .so ini
Contoh-
#include<stdio.h> extern int add(int a, int b); int main(int argc, char** argv) { printf("Hello the output is %d \n",add(10,15)); return 0; }
Simpan sebagai main_file.cpp
-
Buat file .o dari file ini menggunakan perintah ini
g++ -c main_file.cpp
-
Tautkan .so dengan .o menggunakan perintah ini
g++ -o prog main_file.o -L. -ladd
Di sini L menentukan folder dengan file .so
Dan -l menentukan nama perpustakaan .so -
Jalankan program dengan perintah
./prog