链接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_SOURCE
到CFLAGS
,或者如果你在linux上:命令getconf LFS_CFLAGS
为你提供了一个CFLAGS
的确切列表,可以添加到你现有的CFLAGS
以获得大文件支持。
最后,您应该使用apr-1-config --cflags
来获取编译器标志列表(如果可能)。
这是你上一个问题的近乎重复,所以我将对我之前的答案进行近乎重复 – 这不是链接器错误。 您需要将include路径传递给编译器,而不是链接器:
main.o: main.c $(CC) -c $(INC_PATH) main.c