1
Cプログラムをlibssl.so
とリンクしようとしましたが、リンカーはヘッダファイルに存在するライブラリ内の関数を見つけることができません。関数はopenssl/sha.hで宣言されていますが、共有ライブラリには見つかりません
Makefileのターゲットコード:
$(CC) -o [email protected] $^ $(CFLAGS) -lssl -lmagic
出力:
...
/usr/bin/ld: obj/signature.o: undefined reference to symbol '[email protected]@OPENSSL_1_1_0'
//usr/lib/x86_64-linux-gnu/libcrypto.so.1.1: error adding symbols: DSO missing from command line
collect2: error: ld returned 1 exit status
...
関数SHA256_Init()
であり、それは、それがソースファイルに含まれるopenssl/sha.h
で存在します。
私はDebian 9に入っています。libssl1.0.0
、libssl1.0.2
、libssl1.1
、libssl-dev
(1.1.0)がインストールされています。
$ la /usr/lib/x86_64-linux-gnu/libssl*
-rw-r--r-- root root 357024 /usr/lib/x86_64-linux-gnu/libssl3.so
-rw-r--r-- root root 738444 /usr/lib/x86_64-linux-gnu/libssl.a
lrwxrwxrwx root root 13 /usr/lib/x86_64-linux-gnu/libssl.so -> libssl.so.1.1
-rw-r--r-- root root 395176 /usr/lib/x86_64-linux-gnu/libssl.so.1.0.0
-rw-r--r-- root root 431232 /usr/lib/x86_64-linux-gnu/libssl.so.1.0.2
-rw-r--r-- root root 442920 /usr/lib/x86_64-linux-gnu/libssl.so.1.1
何が問題なのですか?
'nm -D /usr/lib/x86_64-linux-gnu/libssl.so | grep SHA256' show? – Barmar
@Barmar、 'U SHA256_Init'、' U SHA256_Transform'です。 – user1764823
「@@ OPENSSL_1_1_0」は重要だと思います。私はそれがどこから来ているのかわからない、それはC++のmanglingのようなものかもしれないようだ。 – Barmar