LucasSouza Postado Outubro 25, 2012 Denunciar Share Postado Outubro 25, 2012 Galera eu estou resolvendo o problema do barbeiro dorminhoco, e estou tendo que usar semaforos, então vamos la:eu declarosem_t customers;int main() { sem_init(customers,TRUE, 0); return 0;}e da a resposta como undefined reference 'semt_init' alguém sabe o que pode ser? Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Marcelo Utikawa da Fonseca Postado Outubro 26, 2012 Denunciar Share Postado Outubro 26, 2012 (editado) Olá!Durante a compilação de um programa existem duas fases:1- A compilação propriamente dita, que é o processo em que é gerado o arquivo objeto do seu código2- A linkagem, que é a geração do executável através da união de todo o código necessário pelo seu programa. Isto inclui o arquivo objeto gerado no passo anterior e mais os outros arquivos objeto contendo as funções não definidas no seu código como o printf ou o sem_init.No caso do printf, por ser uma função padrão, já é parte integrante do compilador e portanto já é adicionada automaticamente. Já para a função sem_init o compilador não inclui automaticamente então você deve especificar.A adição do semaphore.h no seu código apenas declara que existe a função com os parâmetros informados. Assim o compilador consegue executar o primeiro passo mas não o segundo.Se você estiver compilando no linux com o gcc, use a seguinte sintaxe:gcc -pthread -o programa arquivo.c Sendo programa o nome do executável que será gerado e arquivo.c o nome do seu arquivocom o código fonte. Além disso a função sem_init deve receber o endereço do semáforo. O correto seria chamar ela assim: sem_init(&customers,TRUE, 0);Abraços,Marcelo Utikawa da Fonseca Editado Outubro 26, 2012 por Marcelo Utikawa da Fonseca Citar Link para o comentário Compartilhar em outros sites More sharing options...
Pergunta
LucasSouza
Galera eu estou resolvendo o problema do barbeiro dorminhoco, e estou tendo que usar semaforos, então vamos la:
eu declaro
sem_t customers;
int main() {
sem_init(customers,TRUE, 0);
return 0;
}
e da a resposta como undefined reference 'semt_init' alguém sabe o que pode ser?
Link para o comentário
Compartilhar em outros sites
1 resposta a esta questão
Posts Recomendados
Participe da discussão
Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.