Hallo Christian,
Ungern. Ich mag autoconf/autoheader nicht sonderlich.
Warum nicht?
http://www.geocities.com/SiliconValley/Vista/6493/projects/cgi-lib.html
Inzwischen auch schon herausgefunden. ;)
Zuerst hab' ich die aus Debian genommen, aber die hatte einige Funktionen nicht. Dann hab' ich einfach mal nach cgi-lib.h mit Google gesucht und das kam als erster Treffer.
Folgendes: ich habe es fertig gebracht, das Ding zu kompilieren. (Debian 3.0 Woody)
Hier ist der "Patch": (erstaunlicherweise wirklich nur Makefile + eine Source-Datei, s.u.)
--------------------------------------------------------------------------------------------------------------------------------------------
diff -ru cforum-1.0/Makefile cforum-1.0linux/Makefile
--- cforum-1.0/Makefile Wed Nov 6 02:55:27 2002
+++ cforum-1.0linux/Makefile Fri Nov 8 23:49:15 2002
@@ -69,16 +69,16 @@
LIBDIR=pwd/cgi-shared/lib
CC=gcc
-CCFLAGS=-Wall -g -pipe
+CCFLAGS=-Wall -g -pipe -D_GNU_SOURCE
#CCFLAGS=-Wall -march=i686 -O3 -fomit-frame-pointer
EFENCE?=
DEBUG?=-DDEBUG
-LIBS=-ltemplate -lconfigparser -lclientlib
+LIBS=-ltemplate -lconfigparser -lclientlib -ldl
LINKOPTS=-L/usr/local/lib -L$(LIBDIR) -Wl,-rpath $(LIBDIR)
RM?=/bin/rm
LN?=/bin/ln
COMPILE=$(CC) $(DEBUG) $(CCFLAGS)
-CGILIB=/usr/local/lib/libcgi.a
+CGILIB=/usr/local/lib/cgi-lib.a
CCFLAGS_TPL=src/template.c src/utils.c -I- -Isrc/
TEMPLATE=pwd/template_gen.pl
@@ -89,26 +89,26 @@
all: libs modules server view post templates userconf
server:
- $(COMPILE) -pthread -c src/initfinish.c
gdome-config --cflags
- $(COMPILE) -pthread -c src/charconvert.c -I/usr/local/include
- $(COMPILE) -pthread -c src/xml_handling.c
gdome-config --cflags
- $(COMPILE) -pthread -c src/readline.c
- $(COMPILE) -pthread -c src/utils.c
- $(COMPILE) -pthread -c src/fo_server.c
gdome-config --cflags
- $(COMPILE) -pthread -o cgi-bin/fo_server fo_server.o utils.o initfinish.o charconvert.o xml_handling.o readline.o $(EFENCE)
gdome-config --libs -Lcgi-shared/lib/ -lserverlib -lconfigparser $(LINKOPTS)
- $(COMPILE) -lpthread -c src/initfinish.c
gdome-config --cflags
- $(COMPILE) -lpthread -c src/charconvert.c -I/usr/local/include
- $(COMPILE) -lpthread -c src/xml_handling.c
gdome-config --cflags
- $(COMPILE) -lpthread -c src/readline.c
- $(COMPILE) -lpthread -c src/utils.c
- $(COMPILE) -lpthread -c src/fo_server.c
gdome-config --cflags
- $(COMPILE) -lpthread -o cgi-bin/fo_server fo_server.o utils.o initfinish.o charconvert.o xml_handling.o readline.o $(EFENCE)
gdome-config --libs -Lcgi-shared/lib/ -lserverlib -lconfigparser -ldl $(LINKOPTS)
view:
$(COMPILE) -c src/charconvert.c -I/usr/local/include
$(COMPILE) -c src/utils.c
$(COMPILE) -c src/fo_view.c -I/usr/local/include
- $(COMPILE) -o cgi-bin/fo_view fo_view.o utils.o charconvert.o $(CGILIB) $(LIBS) $(LINKOPTS) -liconv
- $(COMPILE) -o cgi-bin/fo_view fo_view.o utils.o charconvert.o $(CGILIB) $(LIBS) $(LINKOPTS) -ldl
$(LN) -fs pwd/cgi-bin/fo_view pwd/cgi-bin/user/
post:
# $(COMPILE) -c src/charconvert.c -I/usr/local/include
# $(COMPILE) -c src/utils.c
# $(COMPILE) -c src/fo_post.c -I/usr/local/include
-# $(COMPILE) -o cgi-bin/fo_post fo_post.o utils.o charconvert.o $(CGILIB) $(LIBS) $(LINKOPTS) -liconv $(EFENCE)
+# $(COMPILE) -o cgi-bin/fo_post fo_post.o utils.o charconvert.o $(CGILIB) $(LIBS) $(LINKOPTS) -ldl $(EFENCE)
$(LN) -fs pwd/cgi-bin/fo_post pwd/cgi-bin/user/
userconf:
@@ -133,8 +133,8 @@
$(COMPILE) -shared -o cgi-shared/modules/flt_http.so src/modules/flt_http.c $(CGILIB) -Isrc/ -I- -I/usr/local/include
libs:
- $(COMPILE) -pthread -shared -o cgi-shared/lib/libconfigparser.so src/configparser.c
- $(COMPILE) -pthread -shared -o cgi-shared/lib/libserverlib.so src/serverlib.c src/utils.c
gdome-config --cflags
- $(COMPILE) -lpthread -shared -o cgi-shared/lib/libconfigparser.so src/configparser.c
- $(COMPILE) -lpthread -shared -o cgi-shared/lib/libserverlib.so src/serverlib.c src/utils.c
gdome-config --cflags
$(COMPILE) -shared -o cgi-shared/lib/libclientlib.so src/clientlib.c src/utils.c $(CGILIB) -I/usr/local/include
$(COMPILE) -shared -o cgi-shared/lib/libtemplate.so src/template.c src/utils.c src/readline.c
diff -ru cforum-1.0/src/charconvert.c cforum-1.0linux/src/charconvert.c
--- cforum-1.0/src/charconvert.c Wed Nov 6 02:55:24 2002
+++ cforum-1.0linux/src/charconvert.c Fri Nov 8 23:48:43 2002
@@ -19,6 +19,7 @@
*
*/
+#include <errno.h>
#include <stdlib.h>
#include <iconv.h>
#include <string.h>
@@ -53,7 +54,7 @@
out_p = out_buf;
while(in_left > 0) {
- result = iconv(cd,(const char **)&toencode,&in_left,(char **)&out_p,&out_left);
+ result = iconv(cd,(char **)&toencode,&in_left,(char **)&out_p,&out_left);
out_size = bsz - out_left;
if(result == (size_t)(-1)) {
if(errno == E2BIG && in_left > 0) {
@@ -117,7 +118,7 @@
out_p = out_buf;
while(in_left > 0) {
- result = iconv(cd,(const char **)&toencode,&in_left,(char **)&out_p,&out_left);
+ result = iconv(cd,(char **)&toencode,&in_left,(char **)&out_p,&out_left);
out_size = bsz - out_left;
if(result == (size_t)(-1)) {
if(errno == E2BIG && in_left > 0) {
--------------------------------------------------------------------------------------------------------------------------------------------
Folgende Anmerkungen: -liconv brauche ich unter Debian nicht, das ist anscheinend bei der Libc6 dabei. Dafür musste ich mit -ldl linken.
In der charconvert.c hat sich der gcc darüber beschwert, das
a) errno.h nicht eingebunden war (und er daher errno und E2BIG nicht kannte)
b) (const char **) nicht mochte und auf einem (char **) bestand
Und jetzt mal eine ganze DAU-mäßige Frage *duck*: Jetzt hab' ich das Teil kompiliert - wie "installiere" ich das denn nun?
Grüße,
Christian
--
Sollen sich alle schämen, die gedankenlos sich der Wunder der Wissenschaft und Technik bedienen und nicht mehr davon erfasst haben als eine Kuh von der Botanik der Pflanzen, die sie mit Wohlbehagen frisst.
-- Albert Einstein