2009-12-07 3 views
1

Jouer avec cela un peu, mais pas aller trop loin ...création de module Apache C, problème reliant SQLite

La logique de mon code SQLite fonctionne si je compile comme un exécutable autonome.

Mon mod_hello.c compile et charges/fonctionne très bien sans le code SQLite

La combinaison des deux, le module compile et est installé, mais le processus apache meurt immédiatement à chaque fois qu'il est chargé. Supprimer tout le code SQLite et simplement lier à SQLite provoque ce problème. En d'autres termes, avec le même code:

apxs -cia -L/usr/local/lib -I/home/devin mod_hello.c 
/* Works Fine, prints "hello world" */ 

apxs -cia -L/usr/local/lib -I/home/devin -lsqlite3 mod_hello.c 
/* compiles but dies on apache load */ 

La plate-forme est OpenBSD 4.6 avec la version de la plate-forme d'Apache 1.3 et SQLite 3.6.20 téléchargé à partir du site SQLite et compilé à partir des sources

+0

Dies comment les messages d'erreur spécifiques seraient utiles ... bien –

+0

, je suppose que je vais devoir aller se blottir avec mon livre gdb pour apprendre .. le apache meurt, créant un fichier httpd.core, avant que quelque chose ne soit écrit dans error_log Je suppose qu'il y a une réponse dans ce fichier de vidage de base? –

+0

@Devin, qu'est-ce que vous utilisez comme un guide/tutoriel pour écrire votre module apache? –

Répondre

1

Le problème avait à voir avec le téléchargement de SQLite et la compilation - quand j'ai supprimé tous les fichiers résultants et installé le paquetage OpenBSD pour SQLite, ça a bien marché. compiler quelques réglages nécessaires spécifiques pour la bibliothèque SQLite utiliser au mieux les paquets que je suppose

-..? devin

0

Normalement, lorsque cela se produit , soit libsqlite3.so n'est pas dans LD_BIBRARY_PATH, ou libsqlite3.so n'est pas tout à fait ce que vous voulez lier, c'est à dire il y a par exemple libsqlite3.1.so que vous voulez lier à. Donc, mon conseil est de vérifier les chemins de chargement, de s'assurer que libsqlite3.so est là, et de vérifier s'il y a un libsqlite3.x.so quelque part que vous pourriez avoir besoin de lier à la place. (-lsqlite3.x au lieu de -lsqlite3

+0

Merci pour votre aide! je trouve ce qui suit dans/usr/local/lib: libsqlite3.a libsqlite3.la libsqlite3.so.8.6 à l'aide -lsqlite3.8.6 ne parvient pas à compiler. Faire un lien symbolique de libsqlite3.so.8.6 à libsqlite3.so dans ce répertoire ne provoque aucun changement dans le comportement original - le module compile, mais apache core dumps au lancement. –