I’m getting the following error when compiling a project which uses the C FFI
and links to the openssl library. A similar post
(http://www.impredicative.com/pipermail/ur/2012-October/001241.htm
<http://www.impredicative.com/pipermail/ur/2012-October/001241.htm>) mentioned
linking lpq at the end of the commands but this sample project doesn’t include
lpq. Any ideas on what I might be doing wrong? Thanks!
th@ubuntu:~/Documents/urwebapps/sample$ urweb sample -debug
gcc -pthread -Wimplicit -Werror -Wno-unused-value -I /usr/local/include/urweb
-c "/tmp/webapp.c" -o "/tmp/webapp.o" -g
gcc -Werror -pthread "/tmp/webapp.o" -L/usr/local/lib -lurweb_http -lurweb
-lm -lcrypto -lssl -o "/home/toddroth/Documents/urwebapps/sample/sample.exe"
-g /home/toddroth/Documents/urwebapps/sample/crypt/crypt.o
/usr/bin/ld: /home/toddroth/Documents/urwebapps/sample/crypt/crypt.o: undefined
reference to symbol 'SHA256@@OPENSSL_1.0.0'
/usr/lib/gcc/x86_64-linux-gnu/4.8/../../../x86_64-linux-gnu/libcrypto.so: error
adding symbols: DSO missing from command line
collect2: error: ld returned 1 exit status
Library Files
crypt.urs
--------------------------------------------------------------------------------------------------------------
val hello : unit -> string
val sha256 : string -> string
crypt.h
--------------------------------------------------------------------------------------------------------------
#include <urweb.h>
uw_Basis_string uw_Crypt_hello(uw_context, uw_unit);
uw_Basis_string uw_Crypt_sha256(uw_context ctx, uw_Basis_string data);
crypt.c
--------------------------------------------------------------------------------------------------------------
#include <string.h>
#include <stdio.h>
#include <openssl/evp.h>
#include <openssl/sha.h>
#include <urweb.h>
uw_Basis_string uw_Crypt_hello(uw_context ctx, uw_unit u) {
return "Hello";
}
uw_Basis_string uw_Crypt_sha256(uw_context ctx, uw_Basis_string data) {
unsigned char dataBin[128], out[EVP_MAX_MD_SIZE];
int len;
len = unbase64((unsigned char *)data, strlen(data), dataBin, sizeof dataBin);
SHA256(dataBin, len, out);
return base64(ctx, out, SHA256_DIGEST_LENGTH);
}
lib.urp
--------------------------------------------------------------------------------------------------------------
ffi crypt
include crypt.h
link crypt.o
Makefile
--------------------------------------------------------------------------------------------------------------
CFLAGS := -I/usr/local/include/urweb
all: crypt.o
Project Files
sample.urp
--------------------------------------------------------------------------------------------------------------
library crypt/lib
sample
_______________________________________________
Ur mailing list
[email protected]
http://www.impredicative.com/cgi-bin/mailman/listinfo/ur