2009-12-12 46 views
20

Tôi đang cố gắng sử dụng openssl trong một chương trình gcc nhưng nó không hoạt động.Làm thế nào để sử dụng OpenSSL trong GCC?

g++ server.cpp /usr/lib/libssl.a -o server 

cung cấp thông báo lỗi, cũng như tùy chọn -l. Tôi phải gõ gì trên dòng lệnh để liên kết với openssl? Các tập tin /usr/lib/libssl.a tồn tại, nhưng tôi vẫn nhận được lỗi liên kết no such function MD5() exists.

+1

Tôi không thấy việc sử dụng -l trong lệnh te bạn đã đăng. Và không đăng câu hỏi của bạn trong trường hợp UPPER - la hét là thô lỗ. –

+2

Một cái gì đó giống như 'g ++ server.cpp -L/usr/lib -lssl -o server' nên thực hiện thủ thuật. Đăng các lỗi chính xác mà bạn đang nhận được và ai đó có thể trợ giúp. Và tôi thứ hai Neil về điều hét lên;) –

+0

Bạn đang thiếu '/ usr/lib/libcrypto.a'. 'libcrypto' cung cấp mật mã được sử dụng bởi' libssl'. Thêm cả hai thứ này vào thứ tự chính xác này vì LD là một dấu gạch chéo đơn: '/usr/lib/libssl.a/usr/lib/libcrypto.a'. – jww

Trả lời

22

Không biết chính xác lỗi bạn đang thấy, rất khó để cung cấp giải pháp chính xác. Đây là nỗ lực tốt nhất của tôi.

Từ thông tin bạn cung cấp, có vẻ như liên kết không thành công vì không thể tìm thấy tham chiếu đến hàm md5 trong libssl.a. Tôi tin rằng chức năng này là thực sự trong libcrypto, do đó bạn có thể cần phải xác định thư viện này là tốt.

g++ server.cpp -L/usr/lib -lssl -lcrypto -o server

12

Bạn hoặc khác có thể tìm thấy bài viết developerWorks bài viết này hữu ích:

Nó mô tả nhất những điều bạn cần biết để khởi đầu với OpenSSL và C/C++. Nếu bạn thấy bạn đang theo dõi hầu hết các bước tương tự, nó có thể giúp bạn xem những gì cần làm.

Chúc may mắn.

+1

Ba liên kết giống nhau. –

5

Trong Eclipse IDE chọn tài sản dự án của bạn -> c/C++ Build -> Cài đặt gcc c mối liên kết (từ các công cụ cài đặt) -> thêm vào Thư viện Search Path (-L)

/usr/lib -lssl -lcrypto

0

Trên hết các câu trả lời được chấp nhận, tôi có thể không làm cho biên dịch ví dụ OpenSSL cho AES-CCM:

https://github.com/openssl/openssl/blob/master/demos/evp/aesccm.c

để làm cho nó làm việc tôi cần phải thêm hai điều nữa:

  • Các Dinamic Thư viện Liên kết: -ldl
  • Thư viện pthread sử dụng POSIX hỗ trợ luồng: -pthread (Thêm trực tiếp các thư viện với -lpthread là not recommended)
Các vấn đề liên quan