链接apache库

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  #include  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

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

非常感谢任何建议,

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

最后,您应该使用apr-1-config --cflags来获取编译器标志列表(如果可能)。

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

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