2017-05-07 76 views
2

我想鏈接ssl庫到我的編譯命令。我通過鏈接ssl庫

sudo apt-get install libssl-dev 

任我compiliaton命令

g++ -Wall -pedantic -std=c++11 -lcrypto -lssl file.cpp 

安裝它然而,它抱怨:

:(.text+0x19b): undefined reference to `SSL_library_init' 
:(.text+0x1a0): undefined reference to `SSLv23_client_method' 
:(.text+0x1a8): undefined reference to `SSL_CTX_new' 
:(.text+0x1ff): undefined reference to `SSL_CTX_ctrl' 
:(.text+0x20e): undefined reference to `SSL_new' 
:(.text+0x26b): undefined reference to `SSL_set_fd' 
:(.text+0x2b6): undefined reference to `SSL_get_peer_certificate' 
:(.text+0x399): undefined reference to `PEM_write_X509' 
:(.text+0x41d): undefined reference to `SSL_write' 
(.text+0x511): undefined reference to `SSL_read' 

所有來源表明我的鏈接是正確的。我有加密庫相同的問題,但使用安裝命令修復它(似乎我沒有它)

我正在運行的Ubuntu。

+0

你可以張貼整個連接器輸出?它甚至找到你的libssl和libcrypto ?: – Pavel

回答

1

注意ssl應放置在crypto之前。 您也可以嘗試添加 「在/ usr /本地/ SSL/lib目錄」,以鏈接的搜索路徑:

g++ -Wall -pedantic -std=c++11 -lssl -lcrypto file.cpp -L/usr/local/ssl/lib 
1

你可以嘗試靜態鏈接會這樣:

g++ -Wall -pedantic -std=c++11 /usr/lib64/libcrypto.a file.cpp 

g++ -Wall -pedantic -std=c++11 /usr/lib/libcrypto++.a file.cpp 

g++ -Wall -pedantic -std=c++11 /usr/lib/x86_64-linux-gnu/libcrypto.a file.cpp 

g++ -Wall -pedantic -std=c++11 /usr/lib64/libcrypto.so file.cpp 

選擇上述之一,取決於文件的位置,您的設備上