Ajuda com make. [RESOLVIDO]

1. Ajuda com make. [RESOLVIDO]

???
gokernel

(usa Linux Mint)

Enviado em 21/03/2010 - 10:58h

Olá Pessoal.

Como fazer um script para MAKE?

Toda vez que tendo modificar um script(makefile) exibe esta menssagem:
--------------------------------------------
makefile:33: *** missing separator. Stop.
--------------------------------------------

Acho que eh um erro de formatação.

Eu queria fazer assim:

---------------------------------------------
01 - Passar 5 arquivos para objetos *.o

02 - E compilar o EXECUTAVEL usando *.a e indicando O DIRETORIO dos arquivos *.h e linkar com uma biblioteca.
---------------------------------------------

Conto com a ajuda de vcs, lógico se entenderam.

gokernel
gokernel@hotmail.com




  


2. Re: Ajuda com make. [RESOLVIDO]

Emerson Esteves
enssso

(usa KUbuntu)

Enviado em 02/04/2010 - 00:12h

Cara, fiz isso mais ou menos assim:

# Gerando o objeto1.o
objeto1.o: objeto1.cc
$(CC) $(CFLAGS) -c $<
# O inicio da linha acima obrigatoriamente tem que ter um caracter TAB, porque isso informa ao make que a
# linha se trata de um comando que deve ser formado e executado
#
# O '$<' será substituido, se não me engano pelo .cc, na linha acima
#
# Se o seu .h não estiver em diretorio diferente ponha no CFLAGS -I/path/para/pontoh

# Gerando o objeto2.o
objeto2.o: objeto2.cc
$(CC) $(CFLAGS) -c $<
# aqui a mesma coisa

# Gerando o objeto3.o
objeto3.o: objeto2.o objeto3.cc
$(CC) $(CFLAGS) -c $<
# aqui a mesma coisa
#
# A instrução objeto2.o faz o make gerar esse .o antes do 3

# Gerando o objeto4.o
objeto4.o: objeto4.cc
$(CC) $(CFLAGS) -c $<
# aqui a mesma coisa

# Gerando o objeto5.o
objeto5.o: objeto1.o objeto2.o objeto4.o objeto5.cc
$(CC) $(CFLAGS) -c $<
# aqui a mesma coisa

# Gerando o programa
programa: objeto1.o objeto2.o objeto3.o objeto4.o objeto5.o
$(CC) $(CFLAGS) -o $@ $(filter %.o, $^) /path/para/conjuntoobjetos1.a -lsharedso
# No inicio da linha a mesma coisa TAB
# Aliás: o erro "makefile:33: *** missing separator. Stop." pode ser por causa da falta desse TAB
#
# O '$@' sera substituido pelo "programa"
#
# O '$(filter' e' uma funcao do make para filtrar texto separado por espaços
#
# O '%.o' e' o filtro, primeiro parâmetro
#
# O segundo parâmetroo e' o quê a será filtrado, o $^ é tudo que esta depois do :
#
# Depois vem a referencia ao .a
#
# Por último a referencia ao .so (shared object) no caso a path dele esta no ldconfig e o nome do so é libsharedso.so

Uma boa pedida é ler o gnumake manual em:
http://www.gnu.org/software/make/manual/

Também dê uma lida em como usar os arquivos .in, automake, etc...
http://www.gnu.org/software/automake/

Ou peça ajuda da 'força' : ) e leia o arquivo configure dos códigos fonte de projetos como o wine, libxml2, etc...

Espero ter lhe ajudado.


3. Thanks brother.

???
gokernel

(usa Linux Mint)

Enviado em 02/04/2010 - 11:40h


enssso DISSE:
---------------------------------------------------
...

Espero ter lhe ajudado.

---------------------------------------------------

Muiiiiito obrigado KARA ajudou mesmo.

Eh que alguns programas eu estava compilando NA MÃO.

Abraços.

gokernel
gokernel@hotmail.com








Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts