Apa sintaks yang benar untuk menambahkan CFLAGS dan LDFLAGS untuk "mengkonfigurasi"?


41

Saya ingin menginstal OpenVPN pada OpenBSD 5.5 menggunakan tarball sumber OpenVPN.

Menurut instruksi di sini , saya harus menginstal dan

tambahkan CFLAGS = "- I / usr / local / sertakan" LDFLAGS = "- L / usr / local / lib" arahan untuk "mengkonfigurasi", karena gcc tidak akan menemukannya sebaliknya.

Saya telah googled secara ekstensif untuk panduan tentang bagaimana melakukan hal di atas pada OpenBSD tetapi tidak ada.

Inilah yang saya rencanakan untuk dilakukan:

  1. Batalkan tarball sumber ke direktori yang baru dibuat
  2. Keluarkan perintah ./configure CFLAGS = "- I / usr / local / sertakan" LDFLAGS = "- L / usr / local / lib"
  3. Keluarkan perintah make
  4. Keluarkan perintah make install

Manakah dari sintaks berikut ini yang benar?

./configure CFLAGS="-I/usr/local/include" LDFLAGS="-L/usr/local/lib"

atau

./configure --CFLAGS="-I/usr/local/include" LDFLAGS="-L/usr/local/lib"

atau

./configure --CFLAGS="-I/usr/local/include" --LDFLAGS="-L/usr/local/lib"

Jawaban:


41

Cara yang benar adalah:

./configure CFLAGS="-I/usr/local/include" LDFLAGS="-L/usr/local/lib"

tetapi ini mungkin tidak bekerja dengan semua configureskrip. Mungkin lebih baik untuk mengatur variabel lingkungan seperti CPATHdan LIBRARY_PATH(lihat gcchalaman manual).

Sebuah contoh:

export CPATH=/usr/local/include
export LIBRARY_PATH=/usr/local/lib
export LD_LIBRARY_PATH=/usr/local/lib

di Anda .profile, misalnya. The LD_LIBRARY_PATHdapat diperlukan dalam kasus shared library jika jalur lari tidak digunakan (ini tergantung pada OS, alat membangun dan pilihan yang digunakan, tetapi tidak harus menyakiti).


Terima kasih atas jawaban anda. Apakah gcc diinstal secara default di sistem dasar OpenBSD 5.5? Jika tidak, saya tidak akan menginstal paket pihak ketiga karena mungkin mengandung bug atau kerentanan keamanan.
user66229

1
@ user66229 jika Anda melakukan instalasi default maka ya, gcc-4.2.1(kecuali jika Anda menggunakan mesin yang benar-benar tua seperti vaxen) ada di comp55.tgz. Ada paket untuk gcc-4.8dan 4.9, dan juga llvm/clang 3.0. Yang pertama tidak termasuk terutama karena alasan lisensi (GPLv2 vs GPLv3), yang terakhir tidak digunakan karena tidak mendukung semua platform yang saat ini didukung OpenBSD.
damien

1
@ user66229 Saya telah mengedit jawaban saya. Ini hanya sebuah contoh, mungkin ada cara lain untuk melakukannya, dan Anda mungkin sudah memiliki beberapa pengaturan. Periksa dulu dengan echo $CPATHdan sebagainya.
vinc17

1
Terima kasih untuk komentar "tetapi ini mungkin tidak berfungsi dengan semua skrip konfigurasi" - Saya baru saja menemukan sebuah case, di mana setelah beberapa dependensi dikompilasi dengan CFLAGS, dependensi terakhir macet ketika CFLAGS ditentukan (dan memang, grep CFLAGS configuremengembalikan kosong dari skrip konfigurasi) .
sdaau

1
Saya akan sangat berhati-hati dengan LD_LIBRARY_PATH: xahlee.info/UnixResource_dir/_/ldpath.html .
skalee

8

Sintaks pertama sudah benar.

./configure CFLAGS="-I/usr/local/include" LDFLAGS="-L/usr/local/lib"

Namun, sangat disarankan untuk menggunakan biner packages(7)atau, jika karena alasan apa pun Anda benar-benar perlu membangun dari sumber, gunakan ports(7)infrastruktur, seperti dijelaskan oleh bagian FAQ 15 .

Siapkan struktur port seperti yang dijelaskan dalam FAQ. Kemudian cari openvpnport:

cd /usr/ports
make search key=openvpn

Ini akan menampilkan sejumlah port yang berisi istilah tersebut openvpn. Salah satunya adalah openvpn-2.3.2dengan jalan net/openvpn.

cd net/openvpn
sudo make install clean

Ini akan bermanfaat bahwa dependensi (hanya di sini lzo2) akan dipasang dengan benar tanpa mengganggu sistem Anda dan Anda akan mendapatkan instruksi tambahan tentang cara menggunakannya openvpndi OpenBSD.


Terima kasih atas jawaban anda. OpenBSD 5.5 sudah memiliki paket OpenVPN (biner) tetapi sudah lama di versi 2.3.2. Saya ingin mengkompilasi dan menginstal versi terbaru 2.3.4 yang hanya tersedia dari GitHub OpenVPN.
user66229

Seperti yang Anda sebutkan lzo, saya perhatikan ada tiga paket biner yang tersedia: lzo-1.08p3.tgz, lzo2-2.06p0.tgz dan lzop-1.03.tgz. Yang mana dari 3 ini yang merupakan ketergantungan untuk OpenVPN?
user66229

1
@ user66229: Itu mungkin lzo2-2.06p0.tgz. Berikut adalah tambalan yang meningkatkan port dari openvpndari 2.3.2ke 2.3.4, tetapi hampir tidak ada perubahan yang relevan dengan OpenBSD antara kedua versi (baca keseluruhan utas). Saya akan sangat, sangat menyarankan Anda pergi dengan paket biner.
damien

@damien Terima kasih atas jawaban Anda dan tautan ke tambalan. Saya membaca isi tambalan dan yang membuat saya khawatir adalah kenyataan bahwa tidak ada pengelola di OpenBSD untuk OpenVPN . Tolong bantu saya menebak jawabannya tentang bagaimana paket biner openvpn-2.3.2.tgzmasuk ke mirror unduhan resmi OpenBSD?
user66229

1
@ user66229 di sini Anda dapat melihat seluruh daftar revisi untuk Makefile port. Seperti yang dikatakan Stuart Henderson (salah satu pengelola paket utama) di utas itu, tidak banyak dari perubahan itu yang sebenarnya relevan untuk OpenBSD.
damien
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.