Fórum Ubuntu Linux - PT
23 de Maio de 2013, 11:40 *
Olá, Visitante. Faça o login ou registre-se.
Perdeu o seu e-mail de ativação?

Login com nome de usuário, senha e duração da sessão
Notícias: Sejam todos bem-vindos e fiquem atentos às regras de utilização do fórum e política de privacidade.
 
   Home   Ajuda Regras Pesquisa Login Registre-se  
Anúncios
Páginas: [1]   Ir para o fundo
  Imprimir  
Autor Tópico: [Resolvido]Como fazer ligação dinâmica local (.SO no diretório do executável) ??  (Lida 889 vezes)
juniorssa
Usuário Ubuntu
*
Deslogado Deslogado

Mensagens: 2


Ver Perfil
« em: 17 de Abril de 2011, 03:49 »

E aê galera estou fazendo um programa em C que usa uma biblioteca dinâmica (LAME codec pra mp3), só que eu queria gerar o executável que utiliza-se a biblioteca (libmp3lame.so) de seu diretório, algo assim:
.../executavel
.../src/executavel.c
.../lib/lame.h
.../lib/libmp3lame.so

Objetivo: Eu quero poder rodar o programa sem precisar instalar o LAME no sistema

Eu já fiz um programa pra testar o codec, está funcionando( Sem Graça)... só que eu tive que instalar o LAME, ou seja, pra compilar/executar ele utiliza o "/usr/include/lame.h" e o "/usr/lib/libmp3lame.so.0".
O comando pra linkar ficou:
gcc  -o"testelame"  ./testelame.o   -lmp3lame

Eu tentei usar o parâmetro -L mostrando o caminho pra "libmp3lame.so". Em uma VM sem instalar o LAME, funcionou pra compilar mas na hora de executar diz que não encontra a biblioteca  Embaraçado

Então como faço pra rodar meu programa usando a biblioteca no diretório do executável e não instalada no sistema???

Curiosidade: não tenho muito conhecimento em Linux e (muito menos)³ em C  Zangado ... literalmente tive dor de cabeça pra compilar até descobrir que precisava usar "-lmp3lame" foi aí que percebi que precisava entender o processo de compilação e peço: caso alguém tenha uma manual (preferencialmente em PT) de como usar o GCC com exemplos me passa-se o link!
« Última modificação: 17 de Abril de 2011, 06:00 por juniorssa » Registrado
juniorssa
Usuário Ubuntu
*
Deslogado Deslogado

Mensagens: 2


Ver Perfil
« Responder #1 em: 17 de Abril de 2011, 05:49 »

[RESOLVIDO]
Opá!! Resolvi tentar com o Netbeans e lá encontrei uma opção em Propriedades do projeto chamada: "Diretórios de pesquisa em tempo de execução (-R)"  Chocado... me chamando a atenção fiz uma pesquisa na net e achei a resposta pra meu problema, que é:

Usar -Wl,-rpath <diretorio-de-biblioteca>, assim passei o diretório relativo!  Legal

O comando pra linkar ficou:
gcc  -o executalvel   src/executavel.o   -Wl,-rpath ./lib   lib/libmp3lame.so

Resultado: Funcionou e ficando como eu queria:
.../executavel
.../src/executavel.o        (pode apagar)
.../lib/libmp3lame.so.0    (tem que ter esse ".0"!  Hein?)

Testes:
- Colocando o executavel junto com a pasta lib em outras locais [funcionou]
- Mudando nome da pasta lib e/ou mudando nome da biblioteca [como esperado não funcionou]
Registrado
Páginas: [1]   Ir para o topo
  Imprimir  
 
Ir para:  

Powered by MySQL Powered by PHP Tema desenvolvido por FaBMak e n3t0
Powered by SMF 1.1.18 | SMF © 2006-2009, Simple Machines
© 2013 Canonical Ltd. Ubuntu e Canonical são marcas registradas da Canonical Ltd.
XHTML 1.0 válido! CSS válido!