我想在gcc程序中使用openssl,但它不工作。如何在GCC中使用OpenSSL?
g++ server.cpp /usr/lib/libssl.a -o server
給出了一條錯誤消息,與-l
選項中的任何操作一樣。我必須在命令行上鍵入與openssl鏈接的內容?文件/usr/lib/libssl.a
存在,但仍然收到鏈接器錯誤no such function MD5() exists
。
我想在gcc程序中使用openssl,但它不工作。如何在GCC中使用OpenSSL?
g++ server.cpp /usr/lib/libssl.a -o server
給出了一條錯誤消息,與-l
選項中的任何操作一樣。我必須在命令行上鍵入與openssl鏈接的內容?文件/usr/lib/libssl.a
存在,但仍然收到鏈接器錯誤no such function MD5() exists
。
不知道你看到的確切的錯誤,很難提供一個確切的解決方案。這是我最好的嘗試。
根據您提供的信息,聽起來好像鏈接程序失敗,因爲它無法在libssl.a中找到對md5函數的引用。我相信這個函數實際上是在libcrypto中,所以你可能需要指定這個庫。
g++ server.cpp -L/usr/lib -lssl -lcrypto -o server
您或他人可以發現本文developerWorks文章有幫助:
它描述了最你需要知道的事情才能在OpenSSL和C/C++中脫穎而出。如果你發現你遵循大部分相同的步驟,它可能會幫助你看到需要做什麼。
祝你好運。
這三個鏈接是相同的。 – 2016-12-06 10:05:58
在Eclipse IDE中選擇項目屬性 - > C/C++編譯 - >設置GCCÇ連接器(從工具設置) - >添加到庫搜索路徑(-L)
/usr/lib目錄-lssl -lcrypto
在接受答案的上方,我不能讓編譯OpenSSL的例子爲AES-CCM:
https://github.com/openssl/openssl/blob/master/demos/evp/aesccm.c
爲了使它工作,我需要添加兩兩件事:
-ldl
-pthread
(添加直接與-lpthread庫是not recommended)
我看不出使用-l的在您發佈的te命令中。不要在大寫的情況下發布你的問題 - 呼喊是粗魯的。 – 2009-12-12 17:01:56
像'g ++ server.cpp -L/usr/lib -lssl -o服務器'應該這樣做。發佈確切的錯誤,你得到的和有人可以幫助。我第二次尼爾在吶喊聲中;) – 2009-12-12 17:03:26
你缺少'/ usr/lib/libcrypto.a'。 'libcrypto'提供'libssl'使用的加密。因爲LD是單通道liker:'/usr/lib/libssl.a/usr/lib/libcrypto.a',所以按照這個順序添加這兩個。 – jww 2015-09-17 23:52:18