Autor Tópico: Pacote de desenvolvimento CLAPACK  (Lida 3627 vezes)

Offline Thiago Henrique

  • Usuário Ubuntu
  • *
  • Mensagens: 8
    • Ver perfil
Pacote de desenvolvimento CLAPACK
« Online: 15 de Dezembro de 2008, 20:50 »
 Olá estou querendo instalar o pacote CLAPACK voltado para álgebra linear e que é uma tradução de antigas rotinas em Fortran para C.
 Segui todas as rotinas de instalação descritas no site dos desenvolvedores:

 http://www.netlib.org/clapack/readme.install

 E com tudo instalado e os testes feitos, não consigo de forma alguma testar um simples programa que exemplifica o uso de uma das funções do pacote =X :

 http://www.netlib.org/clapack/faq.html#1.9

Após compilar assim: gcc teste.c -o teste

Recebo o erro:

/tmp/ccczFf2K.o: In function `main':
teste.c:(.text+0x14a): undefined reference to `dgesvd_'
collect2: ld returned 1 exit status

->"dgesvd_" está definida no header "clapack.h" mas o compilador não a reconhece!

Antes de começar a configurar variáveis de ambiente ou criar makefiles eu simplesmente quiz ver o programa funcionando e coloquei esse source "teste.c" no mesmo diretorio que os headers, ou seja, NÂO SEI MESMO O Q ESTÀ ACONTECENDO O.O

Enfim, gostaria de saber se estou comentendo algum erro, e se alguém já mexeu com o pacote talvez possa me ajudar também...

Grato desde já, Thiago.

Darcamo

  • Visitante
Re: Pacote de desenvolvimento CLAPACK
« Resposta #1 Online: 16 de Dezembro de 2008, 18:24 »
O erro não foi de compilação, mas sim de linkagem.
Você precisa dizer para o linkador para linkar com a biblioteca do clapack.

Se o erro fosse de compilação a mensagem de erro seria diferente. Aqui não tenho essa biblioteca instalada e olha o erro que recebo ao tentar compilar o exemplo.
Código: [Selecionar]
‘dgesvd_’ was not declared in this scope
Você tem que acrescentar "-L minúsculo nome da biblioteca" ao comando na hora de compilar para indicar que o linkador deve linkar com a biblioteca clapack.
Tenta compilar o programa com o comando
Código: [Selecionar]
gcc teste.c -o teste -lclapack

Offline Thiago Henrique

  • Usuário Ubuntu
  • *
  • Mensagens: 8
    • Ver perfil
Re: Pacote de desenvolvimento CLAPACK
« Resposta #2 Online: 16 de Dezembro de 2008, 21:58 »
 Sem resultados =/

 Existem outros headers no diretório: f2c.h e blaswrap.h
 Tentei colocar como opção eles também:  -lf2c -lblaswrap
 É necessário for a extensão "*.h" ou sem ela como vc fez ?

Grato, Thiago.
 


Darcamo

  • Visitante
Re: Pacote de desenvolvimento CLAPACK
« Resposta #3 Online: 16 de Dezembro de 2008, 22:13 »
Você não precisa acrescentar opção para arquivos .h que você fez. Apenas para biblioteca que você usa.
Se você está compilando um exemplo com vários arquivos, tem que linkar com os "arquivos .o" compilados de cada um deles. A maneira mais fácil é simplesmente compilar todos de uma vez.

Por exemplo, digamos que eu tenha os arquivos main.cpp, classe1.h classe1.cpp, classe2.h e classe2.cpp.
Digamos que o main.cpp usa funções ou classes nos demais arquivos. A melhor maneira então é compilar com o comando
Código: [Selecionar]
gcc -o arquivo_compilado main.cpp, classe1.h classe1.cpp, classe2.h e classe2.cppOu simplesmente
gcc -o arquivo_compilado *.h *.cpp

Se, por exemplo, o arquivo classe1.cpp usa uma função na biblioteca gtkmm, então eu teria que compilar indicando para o linkador para também linkar com a gtkmm
Código: [Selecionar]
gcc -o arquivo_compilado main.cpp, classe1.h classe1.cpp, classe2.h e classe2.cpp

Offline Thiago Henrique

  • Usuário Ubuntu
  • *
  • Mensagens: 8
    • Ver perfil
Re: Pacote de desenvolvimento CLAPACK
« Resposta #4 Online: 16 de Dezembro de 2008, 22:32 »
Compilando assim:

gcc teste.c lapack_LINUX.a blas_LINUX.a F2CLIBS/libf2c.a -lm -IINCLUDE

deu certo, o que significa o parametro "-lm" ?

Grato, Thiago.

Darcamo

  • Visitante
Re: Pacote de desenvolvimento CLAPACK
« Resposta #5 Online: 17 de Dezembro de 2008, 10:52 »
O -lm indica que deve linkar com a biblioteca matemática.
Se não me engano é nela que ficam funções como pow, sqrt,cos, etc..

Como é chato ter que usar esse comando para compilar (que só tende a crescer a medida que o número de arquivos aumenta) o ideal é criar um makefile.
Aqui tem um tutorial sobre como fazer isso
http://ubuntuforum-br.org/index.php/topic,21155.0.html

Offline Thiago Henrique

  • Usuário Ubuntu
  • *
  • Mensagens: 8
    • Ver perfil
Re: Pacote de desenvolvimento CLAPACK
« Resposta #6 Online: 07 de Janeiro de 2009, 11:43 »
 Ok muito obrigado pela ajuda, já estou usando os makefiles.