← Back to team overview

sslug-teknik team mailing list archive

Problemer med lænkning

 

Hey

Jeg prøver at compile noget kode, som benytter SHA256 funktionerne fra
openssl/sha.h, men jeg kan sgi ikke få det til at lænke:

$ make
cc `pkg-config --libs --cflags libssl` -o hash hash.c
/tmp/ccZoqZAW.o: In function `check_hash':
hash.c:(.text+0x31): undefined reference to `SHA256_Init'
hash.c:(.text+0x4f): undefined reference to `SHA256_Update'
hash.c:(.text+0x65): undefined reference to `SHA256_Final'
collect2: error: ld returned 1 exit status
make: *** [hash] Error 1


Kommandoen `pkg-config --libs --cflags libssl` giver følgende flag:
-lssl -lcrypto
Hvis jeg stracer compileren kan jeg se, at følgende libcrypto bliver brugt:
[pid 13401]
stat("/usr/lib/gcc/x86_64-linux-gnu/4.7/../../../x86_64-linux-gnu/libcrypto.so",
{st_mode=S_IFREG|0644, st_size=1848736, ...}) = 0
[pid 13401]
open("/usr/lib/gcc/x86_64-linux-gnu/4.7/../../../x86_64-linux-gnu/libcrypto.so",
O_RDONLY) = 8

...og hvis jeg lister dens symboler, så ligger funktionerne der:
$ objdump -T
/usr/lib/gcc/x86_64-linux-gnu/4.7/../../../x86_64-linux-gnu/libcrypto.so|grep
SHA256
0000000000068640 g    DF .text    000000000000000a  OPENSSL_1.0.0
SHA256_Transform
0000000000068330 g    DF .text    00000000000000e2  OPENSSL_1.0.0
SHA256_Init
0000000000068420 g    DF .text    000000000000020f  OPENSSL_1.0.0
SHA256_Update
0000000000068830 g    DF .text    0000000000000078  OPENSSL_1.0.0 SHA256
0000000000068650 g    DF .text    00000000000001c7  OPENSSL_1.0.0
SHA256_Final

Ved nogen, hvad jeg gør galt?

God weekend til alle


Follow ups