链接apache库

时间:2010-01-20 16:09:24

标签: c

gcc 4.4.2

我已经安装了apache runtime portable。 APR-1.3.9

./configure
make
make test
make install

一切安装得很好。

我的/usr/local/apr/lib所有库和以下/usr/local/apr/include/apr-1

中的包含

我有一个简单的main.c程序来测试:

#include <stdio.h>
#include <apr.h>

int main(void)
{
    printf(" == Start of program ==\n");

    return 0;
}

我的makefile:

OBJECT_FILES = main.o

CC = gcc
CFLAGS = -Wall -g -D_LARGEFILE64_SOURCE

LIBS_PATH = -L/usr/local/apr/lib
INC_PATH = -I/usr/local/apr/include/apr-1

LIBS = -lapr-1

test_apr: $(OBJECT_FILES)
    $(CC) $(CFLAGS) $(OBJECT_FILES) $(LIBS_PATH) $(INC_PATH) $(LIBS) -o test_apr

main.o: main.c
    $(CC) -c $(CFLAGS) $(INC_PATH) $(LIBS_PATH) $(INC_PATH) main.c  

然而,当我尝试编译时,我收到以下错误:

gcc -c -I/usr/local/apr/include/apr-1 -L/usr/local/apr/lib -I/usr/local/apr/include/apr-1 main.c    
In file included from main.c:3:
/usr/local/apr/include/apr-1/apr.h:285: error: expected ‘=’, ‘,’, ‘;’, ‘asm’ or ‘__attribute__’ before ‘apr_off_t’
make: *** [main.o] Error 1
make: Target `test_apr' not remade because of errors.

但是,我不明白这一点,因为头文件在apr-1文件夹中被称为apr.h,而我链接的libary称为libapr-1.so

我知道我的路径是正确的我已仔细检查过它们。所以无法理解为什么我无法将它们联系起来。

非常感谢任何建议,

2 个答案:

答案 0 :(得分:8)

我的水晶球告诉我你需要向-D_LARGEFILE64_SOURCE运行添加CFLAGS,或者如果你在linux上运行:命令getconf LFS_CFLAGS会为你提供一个{{1}的确切列表添加到现有CFLAGS以获取大文件支持。

最后,如果可能,您应该使用CFLAGS来获取编译器标志列表。

答案 1 :(得分:3)

这是你上一个问题的近乎重复,所以我将对我之前的答案进行近乎重复 - 这不是链接器错误。您需要将include路径传递给编译器,而不是链接器:

main.o: main.c
    $(CC) -c $(INC_PATH) main.c