Flag -L
memberitahu linker untuk menambahkan direktori tertentu ke jalur pencariannya.
-l
memerintahkannya untuk terhubung ke perpustakaan tertentu, dan ia mencari di jalur pencariannya untuk menemukan perpustakaan itu.
Dengan DMD, Anda harus meneruskan flag ke linker dengan flag -L
. Ini dapat mengambil jalur absolut atau relatif, tetapi jalur tersebut harus relatif terhadap tempat kompiler dijalankan. Jadi jika Anda menggunakan jalur relatif, maka Anda harus selalu menjalankan kompiler dari direktori yang sama (yang umumnya tidak menjadi masalah, karena Anda biasanya memiliki perintah build di Makefile
yang selalu Anda jalankan dari direktori yang sama direktori).
Hal yang paling umum adalah menggunakan jalur absolut untuk perpustakaan yang diinstal pada sistem dan jalur relatif untuk perpustakaan khusus untuk proyek Anda.
Jadi, jika Anda memiliki perpustakaan myzlib/lib/libz.a
, Anda akan meneruskan -L-Lmyzlib/lib -L-lz
ke dmd
.
Ia kemudian akan menambahkan myzlib/lib
ke jalur pencarian linker, dan kemudian mencari libz.a
di jalur pencariannya (linker tahu untuk mengambil bagian setelah -l
, tambahkan lib di depannya dan tambahkan akhiran .a
di akhir untuk mendapatkan perpustakaan yang Anda cari).
Anda dapat menambahkan tanda linker ke dmd.conf
, namun saya tidak menyarankannya. Flag di dmd.conf
adalah yang selalu digunakan oleh dmd untuk setiap program. Jadi, Anda sebaiknya hanya memiliki flag yang digunakan di semua program Anda.
Sebaliknya, berikan mereka ke dmd secara langsung (baik itu di baris perintah atau sebagai bagian dari Makefile
).
Sedangkan untuk file header, Anda perlu menduplikasi deklarasi apa pun yang Anda perlukan dalam file .d
.
File header digunakan oleh kompiler C atau C++, bukan linker. D berbagi tautan yang sama seperti yang Anda gunakan untuk C atau C++, tetapi kompilernya adalah dmd
, bukan gcc
.
Jadi, Anda perlu menduplikasi deklarasi C dalam file D. Cara termudah untuk melakukannya adalah dengan htod
utility, namun hanya berfungsi di Windows atau Anggur.
Apapun itu, Anda harus mendeklarasikan deklarasi C yang akan Anda gunakan dalam file .d
dan menandainya dengan extern(C)
.
person
Jonathan M Davis
schedule
20.02.2011