gpt4 book ai didi

c - 基本 Apache 模块中的链接器错误

转载 作者:太空宇宙 更新时间:2023-11-04 01:55:09 24 4
gpt4 key购买 nike

我正在尝试为 Apache HTTPD 2.4 编写一个“hello world”模块。我在构建模块时收到一些链接器错误,许多 Google 搜索都没有找到解决方案。

我的问题是:

  1. 如何解决 ap_hook_handler 链接器错误?我搜索了 Apache Portable Runtime 源代码和 header ,但没有找到。
  2. 为什么有对 main 的 undefined reference ?我认为共享对象没有 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 -c -o mod_test.so test.c

自动安装:

apxs -i -c -o mod_test.so -c test.c

这应该可行

关于c - 基本 Apache 模块中的链接器错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35525084/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com