Cú pháp chính xác để thêm CFLAGS và LDFLAGS vào cấu hình là gì?


40

Tôi muốn cài đặt OpenVPN trên OpenBSD 5.5 bằng cách sử dụng tarball nguồn OpenVPN.

Theo hướng dẫn ở đây , tôi phải cài đặt lzo và

thêm các lệnh CFLAGS = "- I / usr / local / bao gồm" LDFLAGS = "- L / usr / local / lib" để "cấu hình", vì gcc sẽ không tìm thấy chúng theo cách khác.

Tôi đã googled rộng rãi để được hướng dẫn về cách thực hiện các điều trên trên OpenBSD nhưng không có.

Đây là những gì tôi dự định làm:

  1. Tháo các tarball nguồn tới một thư mục mới được tạo
  2. Ban hành lệnh ./cool CFLAGS = "- I / usr / local / bao gồm" LDFLAGS = "- L / usr / local / lib"
  3. Ban hành lệnh thực hiện
  4. Ban hành lệnh make install

Cú pháp nào sau đây là đúng?

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

hoặc là

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

hoặc là

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

Câu trả lời:


41

Cách chính xác là:

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

nhưng điều này có thể không hoạt động với tất cả các configuretập lệnh. Có lẽ tốt hơn để đặt các biến môi trường như CPATHLIBRARY_PATH(xem gcctrang man).

Một ví dụ:

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

trong của bạn .profile, ví dụ. Có LD_LIBRARY_PATHthể cần thiết trong trường hợp thư viện dùng chung nếu đường dẫn chạy không được sử dụng (điều này phụ thuộc vào HĐH, công cụ xây dựng và các tùy chọn được sử dụng, nhưng nó không bị tổn thương).


Cảm ơn câu trả lời của bạn. Gcc có được cài đặt theo mặc định trong hệ thống cơ sở của OpenBSD 5.5 không? Nếu không, tôi sẽ không cài đặt gói của bên thứ ba vì nó có thể chứa lỗi hoặc lỗ hổng bảo mật.
dùng66229

1
@ user66229 nếu bạn đã cài đặt mặc định thì có, gcc-4.2.1(trừ khi bạn đang sử dụng các máy thực sự cũ như vaxen) comp55.tgz. Có các gói cho gcc-4.84.9, và cũng có thể llvm/clang 3.0. Cái trước không bao gồm chủ yếu vì lý do cấp phép (GPLv2 so với GPLv3), cái sau không được sử dụng vì nó không hỗ trợ tất cả các nền tảng mà OpenBSD hiện đang hỗ trợ.
damien

1
@ user66229 Tôi đã chỉnh sửa câu trả lời của mình. Đây chỉ là một ví dụ, có thể có những cách khác để làm điều đó và bạn có thể đã có một số cài đặt. Kiểm tra đầu tiên echo $CPATHvà như vậy.
vinc17

1
Cảm ơn vì nhận xét "nhưng điều này có thể không hoạt động với tất cả các tập lệnh cấu hình" - Tôi vừa gặp phải một trường hợp, sau khi một số phụ thuộc được biên dịch với CFLAGS, sự phụ thuộc cuối cùng gặp sự cố khi CFLAGS được chỉ định (và thực tế, grep CFLAGS configuretrả về khoảng trống từ tập lệnh cấu hình đó) .
sdaau

1
Tôi sẽ rất cẩn thận với LD_LIBRARY_PATH: xahlee.info/UnixResource_dir/_/ldpath.html .
skalee

8

Cú pháp đầu tiên là chính xác.

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

Tuy nhiên, nó được mạnh mẽ khuyến khích để hoặc nhị phân sử dụng packages(7)hoặc, nếu vì bất cứ lý do bạn hoàn toàn cần phải xây dựng từ nguồn, tận dụng các ports(7)cơ sở hạ tầng, như được giải thích bởi phần FAQ 15 .

Thiết lập cây cổng như chi tiết trong FAQ. Sau đó tìm kiếm một openvpncổng:

cd /usr/ports
make search key=openvpn

Điều này sẽ xuất ra một số cổng có chứa thuật ngữ openvpn. Một trong số đó là openvpn-2.3.2với con đường net/openvpn.

cd net/openvpn
sudo make install clean

Điều này sẽ có lợi ích là các phụ thuộc (chỉ ở đây lzo2) sẽ được cài đặt đúng cách mà không bị chặn hệ thống của bạn và bạn sẽ nhận được hướng dẫn bổ sung về cách sử dụng openvpntrên OpenBSD.


Cảm ơn câu trả lời của bạn. OpenBSD 5.5 đã có gói OpenVPN (nhị phân) nhưng nó đã cũ ở phiên bản 2.3.2. Tôi muốn biên dịch và cài đặt phiên bản 2.3.4 mới nhất chỉ có sẵn từ GitHub của OpenVPN.
dùng66229

Như bạn đã đề cập đến lzo, tôi nhận thấy có ba gói nhị phân có sẵn: lzo-1.08p3.tgz, lzo2-2,06p0.tgz và lzop-1.03.tgz. Cái nào trong số 3 cái này là sự phụ thuộc của OpenVPN?
dùng66229

1
@ user66229: Đó sẽ là lzo2-2.06p0.tgz. Đây là bản vá nâng cấp cổng openvpntừ 2.3.2đến 2.3.4, nhưng hầu như không có thay đổi liên quan đến OpenBSD giữa hai phiên bản (đọc toàn bộ chuỗi). Tôi thực sự, thực sự khuyên bạn chỉ nên đi với gói nhị phân.
damien

@damien Cảm ơn câu trả lời của bạn và liên kết đến bản vá. Tôi đã đọc nội dung của bản vá và điều khiến tôi lo lắng là thực tế không có người bảo trì nào tại OpenBSD cho OpenVPN . Vui lòng giúp tôi đoán câu trả lời về cách gói nhị phân openvpn-2.3.2.tgzcó trên các gương tải xuống chính thức của OpenBSD?
dùng66229

1
@ user66229 tại đây bạn có thể xem toàn bộ danh sách sửa đổi cho Makefile của cổng. Như Stuart Henderson (một trong những người bảo trì gói chính) đã nói trong chủ đề đó, không có nhiều thay đổi trong số đó thực sự phù hợp với OpenBSD.
damien
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.