Erro na compilação: collect2: ld returned 1 exit status [RESOLVIDO]

1. Erro na compilação: collect2: ld returned 1 exit status [RESOLVIDO]

Carlo Alexandre Sampaio Alves
carloalexandre

(usa Debian)

Enviado em 16/06/2011 - 10:56h

Olá comunidade VOL,

um dos sistemas que eu mantenho passou a apresentar um erro quando precisa tratar arquivos maiores que 2Gb. É um servidor Intel com LinuxRedHat que é usado para converter um arquivo binário para texto e salvar as informações em um banco MySQL. Um colega recomendou incluir a declaração "#define _FILE_OFFSET_BITS 64" no início do programa. Eu fiz isso mas quando tento compilar o programa o gcc apresenta a resposta abaixo. Os erros "undefined reference" são para rotinas que estão incluídas no início do código e no final aparece o erro "collect2: ld returned 1 exit status".
Não tenho familiaridade com o ambiente de desenvolvimento em C e estou bem perdido. O que é preciso para compilar esse programa?

Muito Obrigado!

calex@hyperion:~/source$ gcc processa_gsm_bin.c -o teste
/tmp/ccoKTZGI.o: In function `db_load':
processa_gsm_bin.c:(.text+0x160a): undefined reference to `f_inic_etapa'
...
processa_gsm_bin.c:(.text+0x17fc): undefined reference to `f_fim_etapa'
/tmp/ccoKTZGI.o: In function `main':
processa_gsm_bin.c:(.text+0x1ac3): undefined reference to `f_inic_etapa'
...
processa_gsm_bin.c:(.text+0x1f94): undefined reference to `f_fim_status'
collect2: ld returned 1 exit status
calex@hyperion:~/source$

calex@hyperion:~/source$ ls *.h
Commons.h TBinaryFileParser.h THPSDFOAFileParser.h trap.h TType.h
mymysql.h TDecoder.h THPSDFOAFileTypes.h TTypeDecoderRegistry.h

calex@hyperion:~/source$ head -20 processa_gsm_bin.c
/* Author: Marcio Dias
Brief: Converte um arquivo binario em um arquivo text separando os campos do HLR
*/
/* $id $*/
#define _FILE_OFFSET_BITS 64
#include <dirent.h>
#include <stdio.h>
#include <string.h>
#include <errno.h>
#include <unistd.h>
#include <stdlib.h>
#include <time.h>
#include <limits.h>
#include <mysql/mysql.h>
#include "mymysql.h"
#include "Commons.h"
#include "THPSDFOAFileParser.h"
#include "TTypeDecoderRegistry.h"
#include "THPSDFOAFileTypes.h"




  


2. Re: Erro na compilação: collect2: ld returned 1 exit status [RESOLVIDO]

Marcelo A. B. Slomp
mslomp

(usa Slackware)

Enviado em 16/06/2011 - 12:33h

pergunta preliminar: vc está passando ao linker o caminho das bibliotecas e/ou objetos onde estão essas funções não encontradas?


3. Re: Erro na compilação: collect2: ld returned 1 exit status [RESOLVIDO]

Carlo Alexandre Sampaio Alves
carloalexandre

(usa Debian)

Enviado em 16/06/2011 - 14:13h

Olá Marcelo,

eu não fiz isso. Poderia me explicar como fazer?
Muito Obrigado!


4. Re: Erro na compilação: collect2: ld returned 1 exit status [RESOLVIDO]

Carlo Alexandre Sampaio Alves
carloalexandre

(usa Debian)

Enviado em 17/06/2011 - 14:24h

Marcelo,

usei essas referências que você passou ( linker e bibliotecas ) para pesquisar na Internet e encontrei um documento http://wiki.icmc.usp.br/images/0/0a/ApostilaMakefiles2011.pdf que me ajudou a resolver o problema. Tentei declarar a pasta onde estavam os arquivos ".h" como uma biblioteca como em: "$ gcc programa.c -I./biblioteca -L./biblioteca -lfuncoes -o programa" mas não deu certo. Mas eu encontrei o makefile abaixo que compilou o programa. O que fiz foi incluir a declaração "#define _FILE_OFFSET_BITS 64" em todos arquivos.c, gerei novos objetos com gcc -c xxx.c e compilei executando "make". Não consegui entender muito bem o ambiente mas ao menos funcionou. Obrigado pela ajuda.

[crossplat@guaratiba GSM]$ cat makefile
OBJS = mymysql.o trap.o
CC = gcc
CFLAGS = -O2

LIBMYSQL = /usr/lib/mysql/libmysqlclient.so
LIBNETSNMP = /usr/lib/libsnmp.so.10
COBJS= TBinaryFileParser.o \
THPSDFOAFileParser.o \
THPSDFOAFileTypes.o \
TTypeDecoderRegistry.o \
mymysql.o \
trap.o

all: processa_gsm_bin extrai_gsm_bin

processa_gsm_bin : processa_gsm_bin.c $(COBJS)
$(CC) $(CFLAGS) processa_gsm_bin.c $(COBJS) $(LIBNETSNMP) $(LIBMYSQL) -o processa_gsm_bin

extrai_gsm_bin : extrai_gsm_bin.c $(COBJS)
$(CC) $(CFLAGS) extrai_gsm_bin.c $(COBJS) $(LIBNETSNMP) $(LIBMYSQL) -o extrai_gsm_bin

mymysql.o : mymysql.c
$(CC) $(CFLAGS) $(ICOMMON) -c mymysql.c

trap.o : trap.c
$(CC) $(CFLAGS) -c trap.c








Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts