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? :help: :help: :help:
t+ 8)
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...).
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)
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).