Tambahkan -L /usr/local/ssl/lib/
ke baris perintah GCC, sebelum -lcrypto
. Karena Anda membuat header OpenSSL di bawah /usr/local/ssl
, Anda juga perlu menautkan ke perpustakaan yang sebenarnya di bawah awalan yang sama (meskipun Anda tampaknya hanya menginstal yang statis di sana, itu mungkin atau mungkin bukan niat Anda; Anda mungkin perlu menginstal ulang OpenSSL yang dibuat dari sumber dengan benar).
(edit) Untuk memperbaiki dlopen()
dan teman tidak ditemukan oleh linker, tambahkan -ldl
ke baris perintah GCC. -ldl
memberi tahu penaut untuk juga menautkan ke libdl.so, yang merupakan pustaka bersama yang berisi dlopen()
, dlsym()
, dlclose()
dll.; fungsi ini digunakan oleh OpenSSL secara internal dan karenanya, -ldl
adalah dependensi tidak langsung saat menggunakan -lcrypto
(di Linux). Karena Anda menautkan ke versi statis libcrypto, Anda perlu menautkan secara eksplisit ke semua dependensi tidak langsung.
Jika Anda tidak terbiasa menautkan ke perpustakaan yang tepat, saya sarankan Anda menggunakan OpenSSL seperti yang diinstal dari manajer paket Sistem Operasi Anda; itu mungkin menyelamatkan Anda dari beberapa masalah.
Ini mungkin relevan untuk orang yang mencoba membangun openssl mereka sendiri dari sumber dan kemudian menggunakannya untuk mengkompilasi program lain (dalam kasus saya Git)
Selama konfigurasi openssl, tambahkan opsi 'shared':
./config shared
Ini akan membuat perpustakaan bersama yang diperlukan libcrypto.so
. Anda akan menemukan lebih banyak di file INSTALL.
Juga, jika Anda mengalami kesalahan ini selama 'make'
"....can not be used when making a shared object
kompilasi ulang dengan -fPIC
./config shared -fPIC