+ Responder ao Tópico



  1. #1

    Padrão compilar programa com gcc

    ola a todos

    tenho um programa onde seus arquivos estão dividos em duas pastas, index e libgist. um dos arquivos da pasta index devera ser usado em um dos programas da pasta libgist, mas nao queria mover todos os arquivos para uma pasta só. Tetei colocar as opcões -I../index e -L../index no make dos arquivos da libgist, mas mesmo assim quando o arquivo da pasta index a ser usado por libgist não é achado. Segue o make de libgist.
    Código :
    #
    # GiST - Generalized Search Tree
    # June 2001 release, Aalborg University
    #
    # This file is a revised version of a part of the original
    # libGiST release (version 0.9beta1)
    # Copyright (c) 1996, Regents of the University of California
    #
     
    # Common Definitions
    #
    LINKER = g++
    INCS =
    LDFLAGS =
    LIBS = -lg++
    CC = g++
    CFLAGS = $(DEFINES)
     
    # End of common definitions
    #
     
    DEFINES = -DUNIX -DPRINTING_OBJECTS
     
    LIBRARY = libGiST.a
     
    SRCS = GiST.cpp GiSTfile.cpp GiSTfileCache.cpp GiSTpredicate.cpp GiSTcursor.cpp GiSTfcnt.cpp GiSTobs.cpp GiSTnode.cpp
     
    OBJS = $(SRCS:.cpp=.o)
     
    DEST = .
     
    %.o: %.cpp
    $(CC) -g -c $(CFLAGS) $(INCS) $*.cpp
     
    $(LIBRARY): .depend $(OBJS)
    rm -f $(LIBRARY)
    ar rs $(LIBRARY) $(OBJS)
     
    clean:
    rm -f $(OBJS) $(LIBRARY) *~ .depend #*# *pure*
     
    depend:
    makedepend $(DEFINES) $(INCS) $(SRCS)
     
    .depend:
    $(MAKE) depend
    touch .depend
     
    install: $(PROGRAM)
    echo Installing $(PROGRAM) in $(DEST)
    install -s $(PROGRAM) $(DEST)
     
    # DO NOT DELETE THIS LINE -- make depend depends on it.
    algum profissional mais experiente em C poderia dizer como resolver isto? Aproveitando tb alguem conhece uma boa biblioteca que promova o uso de sockets em C? sockets já é padrão nas distribuicões de C?

    t+ 8)

  2. #2
    Visitante

    Padrão compilar programa com gcc

    compila o conteudo de index/ e copia o objeto criado (.o) para o diretorio de libgist. Ai, no fim da linha do 'ar' vc coloca: index.o

    Nao vai ficar bonito (automatico), mas deverá funcionar. (pode ser tb no fim da linha OBJS=... ACHO q deve funcionar tb. ACHO, precisa testar)
    (2 meios de fazer isso legal: tem um diretorio de libs do projeto principal visivel para ambos makefile´s ou usar o 'ld')

    Sobre o socket. Sim, a API de socket é padrao POSIX (e não é definida na normal ANSI), assim, é comum a qualquer sistema unix (inclusive, o basico do basico de socket é a mesma API pra windows tb, como socket() connect() e etc...).

  3. #3
    Visitante

    Padrão compilar programa com gcc

    como usar este ld? ele permitira que os objetos da pasta index sejam usados perlos arquivos da pasta libgist sem ter de ficar copiando os .o de index para libgist?

    valeu 8)

  4. #4
    Visitante

    Padrão compilar programa com gcc

    desculpe, é ldconfig. de uma olhada no man dele (arquivo de configuracao /etc/ld.so.conf).
    Ele serve para indicar onde o compilador, melhor, linkeditor deve buscar as libs envolvidas, quais versoes usar, etc etc etc... e na linkedicao vc apenas adiciona a opcao -lxxxlib (assim q funciona as libs -lpthread ou -lncurses quando vc adiciona no seu projeto)

    é tudo da mesma gang: ld, ldd, ldconfig, ar, nm, ranlib, cc e etc

    Eh legal aprender a usar o ld(config). Mas acho q a melhor opcao para projetos é usar um diretorio comum de libs. Assim vc nao precisa editar arquivos do sistema (nao é que vc vá quebra-lo ao editar... apenas nao precisa ). Aconselharia a mexer no makefile (alem do que, se vc nao sabe usa-lo, é uma OTIMA ferramente para dominar).