Связывание библиотек apache - PullRequest
1 голос
/ 20 января 2010

gcc 4.4.2

Я установил apache runtime portable. Апрель-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;
}

И мой make-файл:

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.h в папке apr-1, а библиотека, с которой я ссылаюсь, называется libapr-1.so

Я знаю, что мои пути верны, я дважды проверил их. Поэтому не могу понять, почему я не могу связать их.

Большое спасибо за любой совет,

Ответы [ 2 ]

8 голосов
/ 20 января 2010

Мой хрустальный шар говорит мне, что вам нужно запустить add -D_LARGEFILE64_SOURCE to CFLAGS, или если вы работаете в Linux: команда getconf LFS_CFLAGS дает вам точный список CFLAGS для добавления к существующему CFLAGS для поддержки больших файлов.

Наконец, вы должны использовать apr-1-config --cflags, чтобы получить список флагов компилятора, если это возможно.

3 голосов
/ 20 января 2010

Это почти недоумение вашего предыдущего вопроса, поэтому я приведу почти недоумение моего предыдущего ответа - это не ошибка компоновщика. Вам нужно передать путь включения компилятору, а не компоновщику:

main.o: main.c
    $(CC) -c $(INC_PATH) main.c 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...