Date: Mon, 27 Dec 1999 11:25:14 -0500 (EST) From: Mikhail Teterin <mi@kot.ne.mediaone.net> To: stable@freebsd.org, ports@freebsd.org Subject: -lc vs. -lc_r (building Apache-PHP) Message-ID: <199912271625.LAA74751@rtfm.newton>
next in thread | raw e-mail | index | archive | help
[-- Attachment #1 --]
Hello!
I found it quite difficult to build the apache13-php3 port :( I selected
MySQL support (among other features -- nice interface, BTW). The apache
binary, however was seg-faulting on startup.
cc -DHARD_SERVER_LIMIT=512 \
-DDEFAULT_PATH=\"/usr/local/bin:/bin:/usr/bin\" -funsigned-char \
-DTARGET=\"apache\" -DMOD_SSL=204109 -DEAPI -DEAPI_MM \
-DUSE_EXPAT -I./lib/expat-lite -O2 -fexpensive-optimizations \
-pipe `./apaci` -L/usr/local/lib -Wl,-E -o apache \
buildmark.o modules.o modules/standard/libstandard.a \
modules/php3/libphp3.a main/libmain.a ./os/unix/libos.a \
ap/libap.a lib/expat-lite/libexpat.a -L/usr/local/lib \
-R/usr/local/lib/mysql /usr/local/lib/libc-client4.a -lgd -lpng \
-lz -lttf -L/usr/local/lib/mysql -lmysqlclient -lexpat -lmcrypt \
-lmhash -Lmodules/php3 -L../modules/php3 -L../../modules/php3 \
-lmodphp3 -lz -lpam -lm -lcrypt -lcrypt -lgdbm -lmm
/usr/lib/libc_r.so.3: warning: mktemp() possibly used unsafely; consider using mkstemp()
/usr/lib/libc_r.so.3: warning: this program uses gets(), which is unsafe.
/usr/lib/libc_r.so.3: WARNING! setkey(3) not present in the system!
/usr/lib/libc_r.so.3: WARNING! des_setkey(3) not present in the system!
/usr/lib/libc_r.so.3: WARNING! encrypt(3) not present in the system!
/usr/lib/libc_r.so.3: WARNING! des_cipher(3) not present in the system!
/usr/lib/libc_r.so.3: warning: this program uses f_prealloc(), which is stupid.
# ldd apache
apache:
libpng.so.3 => /usr/local/lib/libpng.so.3 (0x181a2000)
libz.so.2 => /usr/lib/libz.so.2 (0x181bc000)
libttf.so.4 => /usr/local/lib/libttf.so.4 (0x181c9000)
libmysqlclient.so.6 => /usr/local/lib/mysql/libmysqlclient.so.6 (0x181ec000)
libmcrypt.so.2 => /usr/local/lib/libmcrypt.so.2 (0x181fe000)
libmhash.so.1 => /usr/local/lib/libmhash.so.1 (0x18214000)
libpam.so.1 => /usr/lib/libpam.so.1 (0x18225000)
libm.so.2 => /usr/lib/libm.so.2 (0x1822d000)
libcrypt.so.2 => /usr/lib/libcrypt.so.2 (0x18248000)
libgdbm.so.2 => /usr/local/lib/libgdbm.so.2 (0x1824b000)
libmm.so.10 => /usr/local/lib/libmm.so.10 (0x18251000)
libc.so.3 => /usr/lib/libc.so.3 (0x18255000)
libc_r.so.3 => /usr/lib/libc_r.so.3 (0x182d7000)
# gdb apache
[...]
Program received signal SIGSEGV, Segmentation fault.
0x182bb240 in __swhatbuf () from /usr/lib/libc.so.3
Now, if I relink the executable manually, adding the -pthread at the end:
cc -DHARD_SERVER_LIMIT=512 \
-DDEFAULT_PATH=\"/usr/local/bin:/bin:/usr/bin\" -funsigned-char \
-DTARGET=\"apache\" -DMOD_SSL=204109 -DEAPI -DEAPI_MM \
-DUSE_EXPAT -I./lib/expat-lite -O2 -fexpensive-optimizations \
-pipe `./apaci` -L/usr/local/lib -Wl,-E -o apache \
buildmark.o modules.o modules/standard/libstandard.a \
modules/php3/libphp3.a main/libmain.a ./os/unix/libos.a \
ap/libap.a lib/expat-lite/libexpat.a -L/usr/local/lib \
-R/usr/local/lib/mysql /usr/local/lib/libc-client4.a -lgd -lpng \
-lz -lttf -L/usr/local/lib/mysql -lmysqlclient -lexpat -lmcrypt \
-lmhash -Lmodules/php3 -L../modules/php3 -L../../modules/php3 \
-lmodphp3 -lz -lpam -lm -lcrypt -lcrypt -lgdbm -lmm -pthread
/usr/lib/libc.so.3: warning: mktemp() possibly used unsafely; consider using mkstemp()
/usr/lib/libc.so.3: warning: this program uses gets(), which is unsafe.
/usr/lib/libc.so.3: WARNING! setkey(3) not present in the system!
/usr/lib/libc.so.3: WARNING! des_setkey(3) not present in the system!
/usr/lib/libc.so.3: WARNING! encrypt(3) not present in the system!
/usr/lib/libc.so.3: WARNING! des_cipher(3) not present in the system!
/usr/lib/libc.so.3: warning: this program uses f_prealloc(), which is stupid.
The libraries are arranged differently:
apache:
libpng.so.3 => /usr/local/lib/libpng.so.3 (0x181a2000)
libz.so.2 => /usr/lib/libz.so.2 (0x181bc000)
libttf.so.4 => /usr/local/lib/libttf.so.4 (0x181c9000)
libmysqlclient.so.6 => /usr/local/lib/mysql/libmysqlclient.so.6 (0x181ec000)
libmcrypt.so.2 => /usr/local/lib/libmcrypt.so.2 (0x181fe000)
libmhash.so.1 => /usr/local/lib/libmhash.so.1 (0x18214000)
libpam.so.1 => /usr/lib/libpam.so.1 (0x18225000)
libm.so.2 => /usr/lib/libm.so.2 (0x1822d000)
libcrypt.so.2 => /usr/lib/libcrypt.so.2 (0x18248000)
libgdbm.so.2 => /usr/local/lib/libgdbm.so.2 (0x1824b000)
libmm.so.10 => /usr/local/lib/libmm.so.10 (0x18251000)
libc_r.so.3 => /usr/lib/libc_r.so.3 (0x18255000)
libc.so.3 => /usr/lib/libc.so.3 (0x182e9000)
and the server starts and appears to work.
What's the magic and why doesn't the port know it? Why is -lc even in
play if some of the components (-lmysqlclient) require -lc_r? Yours,
-mi
FreeBSD rtfm.newton 3.4-STABLE FreeBSD 3.4-STABLE #0: Fri Dec 17 08:49:51 EST 1999
[-- Attachment #2 --]
PKGNAME= apache+php+mod_ssl-${VERSION_APACHE}+${VERSION_PHP}+${VERSION_MODSSL}
DISTFILES+= mod_ssl-${VERSION_MODSSL}-${VERSION_APACHE}${EXTRACT_SUFX}
BUILD_DEPENDS+= openssl:${PORTSDIR}/security/openssl \
mm-config:${PORTSDIR}/devel/mm \
${PREFIX}/lib/libmm.a:${PORTSDIR}/devel/mm
LIB_DEPENDS+= crypto.1:${PORTSDIR}/security/openssl \
ssl.1:${PORTSDIR}/security/openssl
RUN_DEPENDS+= openssl:${PORTSDIR}/security/openssl
VERSION_MODSSL= 2.4.9
RESTRICTED= "Contains cryptography"
CONFIGURE_ARGS+=--enable-module=ssl \
--enable-module=define
CONFIGURE_ENV+= SSL_BASE='SYSTEM' EAPI_MM='SYSTEM' PATH="${PREFIX}/bin:${PATH}"
PLIST= ${PKGDIR}/PLIST.modssl
SSL= ssl
TYPE= test
CRT=
KEY=
pre-patch:
@cd ${WRKDIR}/mod_ssl-${VERSION_MODSSL}-${VERSION_APACHE} \
&& ${ECHO_MSG} "===> Applying mod_ssl-${VERSION_MODSSL} extension" \
&& ./configure --with-apache=../${DISTNAME} --expert
post-patch:
@cd ${WRKSRC} \
&& find . -type f -name "*.orig" -print | xargs ${RM} -f
post-build:
@cd ${WRKSRC} \
&& ${ECHO_MSG} "===> Creating Dummy Certificate for Server (SnakeOil)" \
&& ${ECHO_MSG} " [use 'make certificate' to create a real one]" \
&& ${MAKE} certificate TYPE=dummy >/dev/null 2>&1
certificate:
@cd ${WRKSRC} \
&& ${ECHO_MSG} "===> Creating Test Certificate for Server" \
&& ${MAKE} certificate TYPE=$(TYPE) CRT=$(CRT) KEY=$(KEY)
BUILD_DEPENDS+= ${PREFIX}/lib/libgd.a:${PORTSDIR}/graphics/gd
PHP_CONF_ARGS+= --with-gd=${PREFIX}
LIB_DEPENDS+= ttf.4:${PORTSDIR}/print/freetype
PHP_CONF_ARGS+= --with-ttf=${PREFIX}
PHP_CONF_ARGS+= --with-zlib
LIB_DEPENDS+= mcrypt.2:${PORTSDIR}/security/libmcrypt
PHP_CONF_ARGS+= --with-mcrypt=${PREFIX}
LIB_DEPENDS+= mhash.1:${PORTSDIR}/security/mhash
PHP_CONF_ARGS+= --with-mhash=${PREFIX}
BUILD_DEPENDS+= ${PREFIX}/lib/libc-client4.a:${PORTSDIR}/mail/imap-uw
PHP_CONF_ARGS+= --with-imap=${PREFIX}
LIB_DEPENDS+= mysqlclient.6:${PORTSDIR}/databases/mysql322-client
PHP_CONF_ARGS+= --with-mysql=${PREFIX}
BUILD_DEPENDS+= ${PREFIX}/lib/libexpat.a:${PORTSDIR}/textproc/expat
BUILD_DEPENDS+= ${PREFIX}/include/xml/xmlparse.h:${PORTSDIR}/textproc/expat
BUILD_DEPENDS+= ${PREFIX}/include/xml/xmltok.h:${PORTSDIR}/textproc/expat
PHP_CONF_ARGS+= --with-xml=${PREFIX}
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?199912271625.LAA74751>
