AIX (xlC) Makefile Probleme



  • Hallo,

    Bei folgendem Makefile Problem könnte ich Hilfe brauchen:

    ich möchte verschiedene shared Objekt Dateien (.so und .a) mit einer neuen Bibliotek verlinken. Diese dann mit einem ausführbaren Programm (.exe) anwenden.
    Bei Linken läuft alles gut. Jedoch zur Laufzeit (Aufruf der exe Datei) kommt es zu folgendem Fehler

    rtld: 0712-001 Symbol X509_check_issued was referenced
    from module ../lib/libteil1.so(), but a runtime definition
    of the symbol was not found.

    Unter SuSE Linux kann ich das Ganze zum Laufen bringen. Jedoch unter AIX (5.2) funktioniert es nicht.

    Ich habe schon alle möglichen Compileroptionen ausprobiert. Momentan sehen mein Makefiles wie folgt aus:

    für shared Objekt (libmy.so):
    AR = /usr/bin/ar
    CC = /usr/vacpp/bin/cc
    CXX = /usr/vacpp/bin/xlC
    OUT = libmy.so
    CDEBUG = -qlanglvl = noansifor
    DEFINES = -DBITS32 -D_CL_UNIX
    CXXFLAGS = -O -Q

    LDFLAGS = -bM:SRE -G
    INCLUDES = -I. -I../include -I/extern1/include -I/extern2/include

    LIBS = -L ../lib -lteil1 -lteil2 -L ../extern1/lib -lextern1 -L ../extern2/lib -lextern2 -lm

    ifeq "$(ISEFENCE)" "1"
    INCLUDES += -I/usr/local/include
    endif

    ifeq "$(ISEFENCE)" "1"
    LIBS += -L /usr/lib -lefence
    endif

    OBJS := (patsubst %.cpp,%.o,(wildcard *.cpp))

    %.o : %.cpp
    $(CXX) -c $(CXXFLAGS) $(INCLUDES) $(DEFINES) $<

    $(OUT): (OBJS)(OBJS) (CXX) $(LDFLAGS) -o $@ $? $(LIBS)

    all: $(OUT)

    clean:
    rm -f $(OUT) *.o

    für die exe Datei:
    INSTALL = /usr/bin/install
    AR = /opt/freeware/GNUPro/bin/ar
    CC = /usr/vacpp/bin/cc
    CXX = /usr/vacpp/bin/xlC

    CDEBUG = -O
    DEFINES = -DBITS32 -D_CL_UNIX
    CXXFLAGS = -O -Q
    LDFLAGS = -brtl -lC

    ifeq "$(ISTHREAD)" "1"
    CXXFLAGS += -qthreaded
    LDFLAGS += -L/usr/lib/threads -lpthreads -qthreaded
    endif

    INCLUDES = -I. -I../mylib

    LIBS = -L ../mylib -lmylib -lm

    OBJS := (patsubst %.cpp,%.o,(wildcard *.cpp))
    OUT = mytest

    %.o : %.cpp
    $(CXX) -c $(CXXFLAGS) $(INCLUDES) $(DEFINES) $<

    $(OUT): (OBJS)(OBJS) (CXX) $(LDFLAGS) -o $@ $? $(LIBS)

    all: $(OUT)

    clean:
    rm -f $(OUT) *.o

    LIBPATH ist gesetzt.

    Für Hilfe und Anregungen wäre ich sehr dankbar.
    Vielen Dank!

    Pferdle


Anmelden zum Antworten