Hello,
I compiled the last openssl from source with ./config --prefxi=/usr.
nano /usr/lib/pkgconfig/libssl.pc
Code:
prefix=/usr
exec_prefix=${prefix}
libdir=${exec_prefix}/lib
includedir=${prefix}/include
Name: OpenSSL
Description: Secure Sockets Layer and cryptography libraries
Version: 1.0.1e
Requires:
Libs: -L${libdir} -lssl -lcrypto
Libs.private: -ldl
Cflags: -I${includedir}
I tried to compile the following test program with "gcc ssl_accept.c -o
sslaccept -lssl 2> outputsslgcc":
Code:
/* confdefs.h. */
#define PACKAGE_NAME "Zarafa"
#define PACKAGE_TARNAME "zarafa"
#define PACKAGE_VERSION "7.0.0"
#define PACKAGE_STRING "Zarafa 7.0.0"
#define PACKAGE_BUGREPORT "zarafa-dev zarafa.com"
#define PACKAGE "zarafa"
#define VERSION "7.0.0"
#define STDC_HEADERS 1
#define HAVE_SYS_TYPES_H 1
#define HAVE_SYS_STAT_H 1
#define HAVE_STDLIB_H 1
#define HAVE_STRING_H 1
#define HAVE_MEMORY_H 1
#define HAVE_STRINGS_H 1
#define HAVE_INTTYPES_H 1
#define HAVE_STDINT_H 1
#define HAVE_UNISTD_H 1
#define HAVE_DLFCN_H 1
#define YYTEXT_POINTER 1
#define STDC_HEADERS 1
#define HAVE_STDBOOL_H 1
#define restrict __restrict
#define TIME_WITH_SYS_TIME 1
#define HAVE_NCURSES_H 1
#define HAVE_MEMORY_H 1
#define HAVE_STDDEF_H 1
#define HAVE_STDLIB_H 1
#define HAVE_STRING_H 1
#define HAVE_SYS_TIMEB_H 1
#define HAVE_WCHAR_H 1
#define HAVE_SYSLOG_H 1
#define HAVE_SYS_UN_H 1
#define HAVE_SYS_STAT_H 1
#define HAVE_OPENSSL_SSL_H 1
#define HAVE_ZLIB_H 1
#define HAVE_STDLIB_H 1
#define HAVE_MALLOC 1
#define HAVE_SYS_TIME_H 1
#define HAVE_UNISTD_H 1
#define HAVE_ALARM 1
#define HAVE_STDLIB_H 1
#define HAVE_REALLOC 1
#define HAVE_STRFTIME 1
#define HAVE_VPRINTF 1
#define RETSIGTYPE void
#define RETSIGTYPE void
#define HAVE_RANDOM 1
#define HAVE_GETTIMEOFDAY 1
#define HAVE_FTIME 1
#define HAVE_LOCALTIME_R 1
#define HAVE_TIMEGM 1
#define HAVE_GMTIME 1
#define HAVE_GMTIME_R 1
#define HAVE_MEMCHR 1
#define HAVE_MEMSET 1
#define HAVE_SELECT 1
#define HAVE_SOCKET 1
#define HAVE_STRCHR 1
#define HAVE_STRERROR 1
#define HAVE_STRRCHR 1
#define HAVE_STRSTR 1
#define HAVE_STRTOL 1
#define HAVE_STRTOUL 1
#define HAVE_STRTOLL 1
#define HAVE_STRTOULL 1
#define HAVE_SSCANF 1
#define HAVE_STRTOF_L 1
#define HAVE_STRTOD_L 1
#define HAVE_WCTOMB 1
#define HAVE_MBTOWC 1
#define HAVE_DCGETTEXT 1
#define HAVE_GETHOSTBYNAME_R 1
#define HAVE_GETPWNAM_R 1
#define HAVE_VSYSLOG 1
#define HAVE_MYSQL_SET_CHARACTER_SET 1
#define HAVE_VMIME_UTILITY_SMARTPTRINT_HPP 1
#define HAVE_LIBICAL_ICAL_H 1
#define HAVE_CLUCENE_H 1
#define HAVE_SHADOW_H 1
#define HAVE_LIBCRYPT 1
/* end confdefs.h. */
/* Override any GCC internal prototype to avoid an error.
Use char because int might match the return type of a GCC
builtin and then its argument prototype would still apply. */
#ifdef __cplusplus
extern "C"
#endif
char SSL_accept ();
int
main ()
{
return SSL_accept ();
;
return 0;
}
But I get a lot of undefinied function errors in libssl.a like this:
/usr/lib/gcc/sparc-unknown-linux-gnu/4.6.0/../../../libssl.a(ssl_lib.o)(.text+0x368):
In function `ssl_undefined_function':
: undefined reference to `ERR_put_error'
/usr/lib/gcc/sparc-unknown-linux-gnu/4.6.0/../../../libssl.a(ssl_lib.o)(.text+0x3c8):
In function `SSL_CTX_free.part.5':
: undefined reference to `X509_VERIFY_PARAM_free'
/usr/lib/gcc/sparc-unknown-linux-gnu/4.6.0/../../../libssl.a(ssl_lib.o)(.text+0x3f0):
In function `SSL_CTX_free.part.5':
: undefined reference to `CRYPTO_free_ex_data'
/usr/lib/gcc/sparc-unknown-linux-gnu/4.6.0/../../../libssl.a(ssl_lib.o)(.text+0x408):
In function `SSL_CTX_free.part.5':
: undefined reference to `lh_free'
/usr/lib/gcc/sparc-unknown-linux-gnu/4.6.0/../../../libssl.a(ssl_lib.o)(.text+0x420):
In function `SSL_CTX_free.part.5':
: undefined reference to `X509_STORE_free'
/usr/lib/gcc/sparc-unknown-linux-gnu/4.6.0/../../../libssl.a(ssl_lib.o)(.text+0x438):
In function `SSL_CTX_free.part.5':
: undefined reference to `sk_free'
/usr/lib/gcc/sparc-unknown-linux-gnu/4.6.0/../../../libssl.a(ssl_lib.o)(.text+0x450):
In function `SSL_CTX_free.part.5':
: undefined reference to `sk_free'
/usr/lib/gcc/sparc-unknown-linux-gnu/4.6.0/../../../libssl.a(ssl_lib.o)(.text+0x480):
In function `SSL_CTX_free.part.5':
: undefined reference to `X509_NAME_free'
/usr/lib/gcc/sparc-unknown-linux-gnu/4.6.0/../../../libssl.a(ssl_lib.o)(.text+0x484):
In function `SSL_CTX_free.part.5':
: undefined reference to `sk_pop_free'[...]
If I do objdump /usr/lib/libssl.a -t it prints for example:
s2_srvr.o: file format elf32-sparc
SYMBOL TABLE:
00000000 l df *ABS* 00000000 s2_srvr.c
00000000 l d .text 00000000
00000000 l d .data 00000000
00000000 l d .bss 00000000
00000000 l F .text 0000001c ssl2_get_server_method
00000000 l O .rodata 00000074 SSLv2_server_method_data.14895
00000000 l d .rodata.str1.8 00000000
00000000 l d .rodata 00000000
00000000 l d .note.GNU-stack 00000000
00000000 l d .comment 00000000
0000001c g F .text 000019ec ssl2_accept
00000000 *UND* 00000000 time
00000000 *UND* 00000000 RAND_add
00000000 *UND* 00000000 ERR_clear_error
00000000 *UND* 00000000 __errno_location
00000000 *UND* 00000000 SSL_state
00000000 *UND* 00000000 ssl2_do_write
00000000 *UND* 00000000 SSL_clear
00000000 *UND* 00000000 ssl2_read
00000000 *UND* 00000000 ssl_get_prev_session
00000000 *UND* 00000000 ssl_get_new_session
00000000 *UND* 00000000 memcpy
00000000 *UND* 00000000 ERR_put_error
[...]
It seems that this "undefined functions" are defined in libssl.a. I got no idea
why this undefinied functions errors occour. Or is this a gcc problem?
Any help is appreciated. Thanks
Martin
______________________________________________________________________
OpenSSL Project http://www.openssl.org
User Support Mailing List [email protected]
Automated List Manager [email protected]