2009-12-07 41 views
1

玩這個了一下週圍,但沒有得到太遠......Apache的C模塊中創建,連接問題SQLite的

我的SQLite代碼的邏輯工作。

我mod_hello.c編譯並沒有SQLite的代碼

結合使用這兩種負載/正常工作,模塊編譯和安裝,但Apache進程每次被加載時立即死亡。剝離出所有的SQLite代碼,並簡單地鏈接到SQLite導致這個問題。換句話說,用相同的代碼:

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 */ 

該平臺的OpenBSD 4.6到平臺上的Apache版本1.3和SQLite 3.6.20從SQLite的網站上下載的,並從源代碼編譯

+0

模具的特定錯誤消息怎麼會是有用的... – 2009-12-07 05:15:44

+0

好,我想我得去我的gdb書上蜷縮起來學習..在任何寫入error_log之前,apache都會死掉,創建一個httpd.core文件。我推測在這個核心轉儲文件中有一個答案? – 2009-12-07 05:27:46

+0

@Devin,你在用什麼作爲編寫你的apache模塊的指南/教程? – 2010-01-05 02:40:29

回答

1

這個問題與我下載SQLite和編譯有關 - 當我刪除所有這些結果文件並安裝了SQLite的OpenBSD包時,它工作正常,所以必須有一些平臺特異性編譯所需SQLite庫的調整最好使用我猜包

- ?德文

0

通常,當這種情況發生,或者libsqlite3.so不在LD_ LIBRARY_PATH中,或者libsqlite3.so不是你想鏈接的東西,也就是說有例如您要鏈接到的libsqlite3.1.so。所以我的建議是檢查加載時間路徑,以確保libsqlite3.so在那裏,並檢查是否有一個libsqlite3.x.so可能需要鏈接到某處。 (-lsqlite3.x,而不是-lsqlite3)

+0

感謝您的幫助! 我發現在/ usr/local/lib目錄下: libsqlite3.a libsqlite3.la libsqlite3.so.8.6 使用-lsqlite3.8.6無法編譯。從libsqlite3.so.8.6到libsqlite3.so在該目錄中建立符號鏈接不會改變原始行爲 - 模塊編譯,但apache核心在啓動時轉儲。 – 2009-12-07 14:47:59