2016-02-10 3 views
1

Я никогда не использовал для компиляции вещей на linux, теперь мне нужно.
Я хочу скомпилировать старый apache-модуль под названием [modowa] [1].
У меня возникли проблемы при запуске make -lf modowa.mk. То же ошибка несколько раз:make - фатальная ошибка при компиляции modowa (apache-module)

cc -DAPACHE22 -DLINUX -D_ISOC99_SOURCE -D_GNU_SOURCE -D_LARGEFILE64_SOURCE -D_REENTRANT -fPIC -Wall -O -fPIC -I. -I/rdbms/public -I/network/public -I/xdk/include -I/home/myuser/tmp/apache22/include -I/usr/include/apr-1 -I/usr/include/apache2 -c owasql.c 
    In file included from owasql.c:60:0: 
    ./modowa.h:179:22: fatal error: oratypes.h: No such file or directory 
    compilation terminated. 
    make: *** [owasql.o] Error 1 

owasql.c на линии 60 включает modowa.h, modowa.h на линии 179 inclused oratypes.h. Файл oratypes.hсуществует на $ORACLE_HOME/rdbms/public:

# ls $ORACLE_HOME/rdbms/public/oratypes* 
    $ORACLE_HOME/rdbms/public/oratypes.h 
    # 

ENV-Vars: ORACLE_HOME, NLS_LANG, LD_LIBRARY_PATH установлены перед запуском сделать команду.
Моя Makefile выглядит следующим образом:

# Makefile for mod_owa.so 
    .SUFFIXES: 
    .SUFFIXES:    .lc .oc .lpc .opc .pc .c .o .cpp .oln 

    # It's assumed that you have ORACLE_HOME set in your build environment; 
    # if not, add a definition here to support the make process. 
    ORA_LIB   = $(ORACLE_HOME)/lib 

    # Change this to point to wherever you've installed Apache. 
    APACHE_TOP  = /home/myuser/tmp/apache22 

    ORAINC   = -I$(ORACLE_HOME)/rdbms/public \ 
         -I$(ORACLE_HOME)/network/public \ 
         -I$(ORACLE_HOME)/xdk/include 
    INCLUDES  = -I. $(ORAINC) -I$(APACHE_TOP)/include -I/usr/include/apr-1 -I/usr/include/apache2 

    # CC = cc almost everywhere, but change as necessary for your platform 
    # (e.g. CC = gcc, or CC = /path/to/yourcc). 
    # 
    # You might need to define LD = ld on some platforms. Mainly this matters 
    # in cases where the flag to build a shared library isn't understood by cc. 
    # Actually ld is probably correct on most platforms; it would work on 
    # Linux, too, except that Oracle built the OCI library in such a way that 
    # you will have unresolved symbols unless you use cc to link. 
    CC    = cc 
    LD    = cc 

    # This consists of -D<platform>, plus whatever other flags may be required 
    # on your platform. In general, -O (optimization) is a good idea. Other 
    # flags may be needed to improve the code, for example special flags to 
    # force string literals into the code segment (e.g. "-xstrconst" on Solaris). 
    # Some platforms require that loadable libraries be build with "position- 
    # independent code", and a special flag is needed here to generate such 
    # code (e.g. "-Z" on HP/UX). Finally, the OCI may require certain other 
    # compilation flags, particularly flags that govern how structures and 
    # structure members are aligned and ordered, and flags that govern 
    # misaligned read/write operations (in general, the compiler defaults 
    # will be correct). 
    # On Linux x86_64, you may need -m64 and you definitely need -fPIC. 
    DEFS   = -D_ISOC99_SOURCE -D_GNU_SOURCE -D_LARGEFILE64_SOURCE \ 
         -D_REENTRANT 
    CFLAGS   = -DAPACHE22 -DLINUX $(DEFS) -fPIC -Wall -O -fPIC 

    # Mainly, LDFLAGS needs to contain whatever flag is required to cause the 
    # linker to generate a shared/dynamic library instead of a normal executable. 
    # This is different on every platform. 
    LDFLAGS   = -shared 

    # Other libraries may be needed on other platforms (e.g. "-lcl" on HP/UX). 
    CLIBS   = -L/usr/lib -ldl -lpthread -lc 

    ORALINK   = -L$(ORACLE_HOME)/lib -lclntsh 

    # Build the target stubs against this library, which forces older glibc 
    # dependencies to be built into the binary and ensures compatibility with 
    # older versions of Linux. 
    ORASTUBS  = $(ORACLE_HOME)/lib/stubs/libc-2.3.4-stub.so 

    OBJS   = owautil.o owafile.o owanls.o owasql.o owalog.o \ 
         owadoc.o owahand.o owaplsql.o owacache.o modowa.o 

    mod_owa.so: $(OBJS) 
      $(LD) $(LDFLAGS) -o [email protected] $(OBJS) $(ORALINK) $(CLIBS) 

    stubs: $(OBJS) 
      $(LD) $(LDFLAGS) -o mod_owa.so $(OBJS) $(ORALINK) $(ORASTUBS) $(CLIBS) 

    .c.o: 
      $(CC) $(CFLAGS) $(INCLUDES) -c $< 

Мой тезис: Прилагаемый каталог $ORACLE_HOME/rdbms/public не получает включен. Все файлы в этом каталоге имеют одинаковые разрешения файлов -rwxr-xr-x, поэтому я бы сказал, что здесь нет проблемы с разрешением, за исключением того, что другой файл этого каталога не используется в дальнейшем.

Мой вопрос: Могу ли я проверить свою диссертацию? Кто-нибудь есть идея, как я могу продолжать?
С уважением.

система:
SUSE Linux
Oracle 11g XE
Apache 2.2.17

**Referenzes:** 
[Apache PL/SQL Gateway Module][1] 
[Users guide to compile modowa][2] 
[Just another users guide to compile modowa][3] 
[1]: https://oss.oracle.com/projects/mod_owa/dist/documentation/modowa.htm 
[2]: http://bshensky.livejournal.com/7424.html 
[3]: http://elisabeth-olaf.de/Oracle_Apex_PLSQL/Entries/2008/9/2_How_I_installed_modowa_(mod_owa)_on_Linux_X86_64_bit.html 

Update 1: Извините, но я должен поставить ссылку часть в кодовые метки, в противном случае я получаю сообщение о том, что мой пост, как представляется, содержит не форматированный код ...

ответ

0

Так что это похоже на форматирование make-файла был неправ. Я посмотрел в исходный Makefile, и я только что видел эту часть, имеющую 4 пространства меньше на линии-вскрыт линий ...

ORAINC   = -I$(ORACLE_HOME)/rdbms/public \ 
        -I$(ORACLE_HOME)/network/public \ 
        -I$(ORACLE_HOME)/xdk/include 

.

ORAINC   = -I$(ORACLE_HOME)/rdbms/public \ 
       -I$(ORACLE_HOME)/network/public \ 
       -I$(ORACLE_HOME)/xdk/include 

make .kf modowa.mk обрабатываются без какого-либо предупреждения или ошибки.

Смежные вопросы