1
我正在嘗試爲Apache HTTPD 2.4編寫一個「hello world」模塊。構建模塊時,我收到了一些鏈接器錯誤,許多Google搜索沒有發現解決方案。基本Apache模塊中的鏈接器錯誤
我的問題是:
- 我怎樣才能解決ap_hook_handler鏈接錯誤?我搜索了Apache Portable Runtime源代碼和頭文件,但沒有找到它。
- 爲什麼有一個未定義的引用main?我認爲共享對象沒有main()入口點。
的源代碼:
// Dependancies: apr-devel apr-util-devel
#include <httpd.h>
#include <http_config.h>
#include <apr_hooks.h>
static int test_handler(request_rec* request)
{
return OK;
}
static void register_hooks(apr_pool_t *pool)
{
ap_hook_handler(test_handler, NULL, NULL, APR_HOOK_LAST);
}
module AP_MODULE_DECLARE_DATA test_module =
{
STANDARD20_MODULE_STUFF,
NULL,
NULL,
NULL,
NULL,
NULL,
register_hooks
};
構建命令:
apxs -lapr-1 -laprutil-1 -c test.c -o mod_test.so
的錯誤:
apxs -lapr-1 -laprutil-1 -c test.c -o mod_test.so
/usr/lib64/apr-1/build/libtool --silent --mode=compile gcc -prefer-pic -O2 -g -pipe -Wall -Wp,-D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector --param=ssp-buffer-size=4 -m64 -mtune=generic -Wformat-security -fno-strict-aliasing -DLINUX=2 -D_REENTRANT -D_GNU_SOURCE -pthread -I/usr/include/httpd -I/usr/include/apr-1 -I/usr/include/apr-1 -c -o test.lo test.c && touch test.slo
/usr/lib64/apr-1/build/libtool --silent --mode=link gcc -o test.la -lapr-1 -laprutil-1 -rpath /usr/lib64/httpd/modules -module -avoid-version test.lo -o mod_test.so
/usr/lib/gcc/x86_64-redhat-linux/4.4.7/../../../../lib64/crt1.o: In function `_start':
(.text+0x20): undefined reference to `main'
.libs/test.o: In function `register_hooks':
/root/test/test.c:14: undefined reference to `ap_hook_handler'
collect2: ld returned 1 exit status
apxs:Error: Command failed with rc=65536
我不知道'apxs',但是當使用'gcc'時必須給''-shared'參數建立一個共享庫。該參數未在調試輸出中列出。 –