Problemas con compilacion estatica, de una archivo.c usando opencv.....

Imagen de sergiome
0 puntos

Estoy creando unos archivos empleando las librerias de opencv, al compilarlo en modo dinamico si funciona correctamente, peo al hacerlo de modo estatico me arroja un error.ç

Asi lo hago en modo dinamico:

root@smerchan-desktop:/opt/opencv/simple-examples# g++ `pkg-config --cflags opencv` -o prueba31 prueba3.c `pkg-config --libs opencv`

Asi lo hago en modo estatico:

root@smerchan-desktop:/opt/opencv/simple-examples# g++ `pkg-config --cflags opencv`-static -o prueba31 prueba3.c `pkg-config --libs opencv`
/usr/bin/ld: cannot find -lcxcore
collect2: ld devolvió el estado de salida 1
root@smerchan-desktop:/opt/opencv/simple-examples#

Espero que me puedan ayudar......

Imagen de Sanguinario_Joe
+1
0
-1

Admito que no uso OpenCV, aunque es probable que acabe haciendolo, pero no es un poco retorcida tu forma de linkar?

Ahora no tengo mucho tiempo, pero luego si puedo te escribo como lo haria yo...

Por otra parte...

Para que quieres linkar estaticamente??

En Linux eso no se lleva mucho, si alguien usa tu programa, se instala las librerias de OpenCV, que en realidad para eso se invento el linkado dinamico.

Por cierto, mueve este hilo a Desarrollo...

Saludos!!!

+1
0
-1
Imagen de sergiome
+1
0
-1

gracias por tu respuesta, y contestando tu pregunta:
necesito linkar estaticamente debido a que el ejecutable lo pienso montar en un sistema embebido que tiene un procesador de 32 bits cuyo sistema operativo esta basado en linux, por lo tanto preferiria no montar la libreria opencv en él para no ocupar mucha memoria.

+1
0
-1
Imagen de Sanguinario_Joe
+1
0
-1

Comprendo... Aunque el paquete de librerias (que seria el unico necesario, solo mide 981 KB, y con los extras y el gui solo 1,5 MB)

Pues te cuento, yo para linkar, suelo ser algo mas clasico, y evito asi, en la medida de lo posible, problemas de ese estilo...

Que es lo que hago yo? Pues hacerlo manualmente... Parece que tu problema esta en las librerias, asi que atacaremos solo sobre ellas.

Lo mas probable, es que al poner `pkg-config --libs opencv`, te este buscando libcxcore.a, pero es una practica habitual que las librerias dinamicas (en la que si existe libcxcore.so) tengan nombres diferentes a las estaticas.

Para probar, me acabo de instalar las librerias...

Voy a /usr/lib, y busco:

libcx

Y me encuentro con la libreria dinamica:

libcxcore.so.1

Pero de la estatica ni rastro... Si probamos suerte buscando:

libcv

Mas de lo mismo...

Uhm ¿extraño no? Vuelvo a mi synaptic, y busco:

opencv

Miro los ficheros instalados por las librerias (dandole a derecho/propiedades), y ni rastro de librerias estaticas (*.a)...

En un desesperado intento instalo los paquetes de desarrollo (development = *-dev), a ver que me encuentro...

Descargando... (lo hago en tiempo real, y mi linea no es una maravilla)

Hecho! estos ya me han costado mas, 5 MB, casi 6...

Una vez instaladas, me deja urgar entre los ficheros instalados... ECO! aqui estan! y parecen tener los mismos nombres!

Tiene toda la pinta de que es lo que te falta ¿no?

Instalate los paquete *-dev, a ver si se te soluciona.

Si ya los tenias instalados, escribeme y los linkamos manualmente ¿va?

Suerte y saludos!!!

+1
0
-1
Imagen de sergiome
+1
0
-1

Gracias por seguir respondiendo, y aprovecho para comentarte que soy muy novato en esto de linux, por lo cual espero me tengas paciencia.

Leyendo lo que me escribiste, encuentro que buscas las librerias que instalaste (incluyendo libcx) en:

/usr/lib

pero en esa carpeta no encuentro ninguna del paquete de opencv, las de ese paquete las encuentro en:

/opt/opencv/lib

menciono algunas de las que ahi encuentro:

libcxcore.la; libcxcore.so; libcxcore.so.1; libcxcore.so.1.0.0

Tengo una pregunta, por que dices:
>>el paquete de librerias (que seria el unico necesario, solo mide 981 KB, y con los extras y el gui solo 1,5 MB)

Al instalarlo, me crea 4 carpetas: bin, include, lib, y share.

Acaso no todas son necesarias?

>>intento instalo los paquetes de desarrollo (development = *-dev)

Como instalaste estos paquetes, que supongo son especificos para opencv.

Por cierto tengo instalada la version "opencv-1.0.0"

Muchas Gracias.

espero noticias

+1
0
-1
Imagen de Sanguinario_Joe
+1
0
-1

No pasa nada, todos hemos pasado por aprender, nadie nace sabiendo...

No conoces synaptic?? usas ubuntu o kubuntu??

Bueno, dejemos eso de momento, y vayamos por partes (como dijo jack el destripador)

----- 1.- Librerias estaticas / dinamicas en Linux ------------------------
En linux, al igual que en windows, las librerias estaticas y las dinamicas tienen extensiones diferentes, de tal forma que las librerias dinamicas tienen la extension .so, que en tu caso, y como bien dices, has encontrado estas librerias:

libcxcore.so; libcxcore.so.1; libcxcore.so.1.0.0

Que como ves son todas dinamicas (el hecho de que aparezca la version no es importante).

Por su lado, las librerias estaticas en Linux se nombran con la extension .a, es decir, a parte de las librerias que ya has conseguido, deberias tener, tambien en /usr/lib, las siguientes librerias:

libcxcore.a; libcxcore.a.1; libcxcore.a.1.0.0

Pero no las tienes, y por eso solo te casca al linkar estaticamente.
------------------------ 1.- Librerias estaticas / dinamicas en Linux -----

----- 2.- Paquetes necesarios ------------------------
Me preguntas por esta expresion:

>>el paquete de librerias (que seria el unico necesario, solo mide 981 KB, y con los extras y el gui solo 1,5 MB)

Dejando de lado lo del synaptic, que ahora despues entenderas mejor... Lo unico que alguien que usara tu programa necesitaría (no que lo modificara ni compilara), serian las librerias dinamicas (ni cabeceras (include), ni nada de nada (a lo mejor los bin))
Ahora cuando entremos al meollo del synaptic tratamos de recuperar esa afirmacion que te intriga.
------------------------ 2.- Paquetes necesarios -----

----- 3.- Paquetes *-dev ------------------------
Dejando de nuevo de lado el tema del synaptic, y lo de los paquetes en general, normalmente todo software libre se entrega principalmente en dos tipos de paquetes, los normales, que contienen toda la informacion para usar la aplicacion/libreria, y los -dev, que contienen todo lo necesario para los desarrolladores (-dev = development), y en tu caso, contienen las librerias estaticas, que solo necesitan aquellos que esten desarrollando aplicaciones.
------------------------ 3.- Paquetes *-dev -----

----- 4.- Synaptic // Paquetes ------------------------
Esta es la parte que va a solucionar todas tus dudas...
En Linux (sea la distro que sea, en tu caso Ubuntu, o Kubuntu, o Xubuntu), la version del instalador de windows se llama paquete. Cada distro usa un tipo de paquete. Mandriva por ejemplo usa los RPM, y nosotros, por derivar de Debian, usamos los DEB (archivos *.deb)
En Ubuntu, estos paquetes se gestionan con una aplicacion llamada apt-get. apt-get busca en tus repositorios, que no son mas que paginas web que ofrecen software, de tal forma que cumple dos funciones:
1.- Instalara todos los paquetes que le pidas siempre y cuando los encuentre en los repositorios.
2.- Actualizara automaticamente todos los paquetes que hayan sido publicados en los repositorios, de tal forma que ya no solo se te actualiza el sistema operativo, sino todas las aplicaciones que hayas instalado con apt-get (que veras que pueden ser la mayoria).
Los repositorios los puedes encontrar de dos formas:
1.- La mala: Vete a

Sistema/Administracion/Orígenes del software

2.- La buena: Abre una terminal y escribe

sudo gedit /etc/apt/sources.list

Ambas formas atacan sobre el mismo archivo (/etc/apt/sources.list), pero editandolo en modo texto puedes poner comentario (lineas que comienzan con #), lo cual te permite poner un titulo, y asi saber que es cada repositorio.
De momento usa el primer sistema para que podamos activar algunos repositorios y actualizaciones. Una vez abierto el gestor, en la pestaña Software de ubuntu activa todas las casillas, y en la pestaña Actualizaciones activa todas menos proposed (lo pone al final)

Por lo que cuentas en tu mail, parece que tu te has bajado los codigos fuente (un archivo .tar, .gz, .bz2, o algo asi...) de la pagina de OpenCV, lo has descomprimido y has hecho:

make clean
make
sudo make install

Vamos, a la antigua... Pero podrias haberlo hecho con apt-get

Bien, apt-get es una aplicacion por consola (= ligeramente incomoda para buscar cosas), y por eso se invento Synaptic. Synaptic no es mas que una interfaz grafica para apt-get, que puedes encontrar en:

Sistema/Administracion/Gestor de paquetes Synaptic

Bueno, pues arrancalo y busca (tiene un pequeño buscador arriba)

opencv

Y veras que te salen los siguientes paquetes:

libcv1;libcvaux1;libcvaux-dev;libcv-dev;libhighgui1;libhighgui-dev;opencv-doc;python-opencv

Si no tienes Synaptic, no importa, sigue leyendo...
------------------------ 4.- Synaptic // Paquetes -----

----- 5.- Respuestas definitivas ------------------------
Bueno, pues es la hora de arrojar luz!!!
Para una persona que solo quiera usar tu programa, nada mas deberia instalar este paquete:

libcv1

Pues tu no has usado extensiones. (Este es el que tan solo mide 981KB.)
Si por cualquier razon tu has empleado tecnologia algo mas puntera, y disponias de extensiones, el usuario debera instalar los siguientes paquetes (en funcion de cuales hayas usado tu):

libcvaux1; libhighgui1

Bien, pues hazlo!
1.- Si tienes Synaptic, simplemente haz doble click sobre ellos, y luego dale a Aplicar
2.- Si no tienes Synaptic, simplemente abre una terminal y escribe:

sudo apt-get install libcv1 libcvaux1 libhighgui1

Bueno, tras lo anterior, tan solo hemos instalado las librerias dinamicas, que tu ya tenias, quizas con la salvedad de que hemos instalado los extras, y el soporte para GUI, luego en un principio no hemos cambiado nada (ademas lo instala en el mismo directorio, luego lo ha pisoteado). Pero si que hemos cambiado algo, ahora si por cualquier circunstancia se actualizan las librerias, tu recibiras la nueva version automaticamente, y ademas, si quieres desinstalarlas tan solo tienes que usar el gestor de paquetes Synaptic, y marcarlas para eliminar, o usar la terminal escribiendo:

sudo apt-get purge paquete_a_desinstalar

Mucho mas comodo ¿no?
>> Si tienes Sinaptyc, puedes ver todo lo que te ha instalado dando boton derecho, a propiedades, y mirando la ficha archivos instalados

Y ahora, por fin la solucion a este hilo!!!
Si instalas los siguientes paquetes (por el medio Synaptic, o por el medio apt-get // terminal):

libcv-dev libcvaux-dev libhighgui-dev

Podras linkar estaticamente sin problemas (ya que estos son los que contienen las librerias estaticas).
------------------------ 5.- Respuestas definitivas -----

Bueno, espero haberte ayudado...

He supuesto que no conocias el tema de los paquetes, y he pretendido darte algunas ideas, pero es una herramienta potente, y deberias familiriarizarte con todo lo que rodea a los siguientes terminos:

repositorios; paquetes debian; synaptic; apt-get;

Los que hemos ido mencionando basicamente...

Ya me cuentas!!!

Saludos!!!

+1
0
-1
Imagen de sergiome
+1
0
-1

Gracias por toda esa informacion.

Probare lo que me indicaste para mi pc en mi casa, por ahora estoy intentando instalar el mismo paquete de librerias de opencv en otro pc, en el cual tengo instalada la version de debian etch 4.0 i686. Pero para variar , tengo problemas.
Primero al estar el debian con lo basico, no tengo interfaz grafica (para mis aplicaciones de opencv de los graficos no necesito informacion visual, solo informacion que estraigo de ellos. Por lo tanto preferiria no instalar interfaz grafica).

intente en el pc con debian:

>>apt-get install libcv1 libcvaux1 libhighgui1
Pero nada me sale un error que dice que no se pudo encontrar el paquete, se que segun lo que me dices es problema de los repositorios, pero no se cual repositorio agregar.

Tambien inteneten instalar opencv con los archivos .tar que ya tenia pero nada, no me funciona.

En la noche probare lo de las librerias estaticas en mi pc,

te contare como me fue con eso.

Gracias

+1
0
-1
Imagen de sergiome
+1
0
-1

Estoy recontento, han sido dias de mucho aprendizaje.

encontre otra forma de instalarlas, primero las busque dando el siguiente comando:
apt-cahe search opencv
encontre:

libcv-dev
libcv0.9.7-0
libcvaux-dev
libcvaux0.9.7-0
libhighgui-dev
libhighgui0.9.7-0

Y luego los instale todos, usando:
apt-get install nombre_archivo

Luego busque en donde estaban instaladas las librerias en mi pc , y las encontre en :

/usr/lib

Alli encontre las siguientes librerias (de las instaldas):

libcv0.9.7.a
libcv0.9.7.la
libcv0.9.7.so
libcv0.9.7.so.0
libcv0.9.7.so.0.9.7

libhighgui0.9.7.a
libhighgui0.9.7.la
libhighgui0.9.7.so
libhighgui0.9.7.so.0
libhighgui0.9.7.so.0.9.7

libcvaux0.9.7.a
libcvaux0.9.7.la
libcvaux0.9.7.so
libcvaux0.9.7.so.0
libcvaux0.9.7.so.0.9.7

libcxcore0.9.7.a
libcxcore0.9.7.la
libcxcore0.9.7.so
libcxcore0.9.7.so.0
libcxcore0.9.7.so.0.9.7

Creo que asi estan bien instaladas.

Ahora me surge la pregunta, si debo modificar algun archivo para indicar al momento de complilar donde estan instaladas esas librerias, lo pregunto por que al instalarlas librerias como lo habia hecho (con el archivo .tar), si tenia q modificar un archivo.

Solo resta agradecerte por toda la colaboracion, y pedirte que me colabores con una complilacion de un archivo en .c que use dichas librerias.

Muchisimas Gracias

+1
0
-1
Imagen de Sanguinario_Joe
+1
0
-1

Yo es que me baso en Ubuntu, y por tanto no se lo que hay en los repositorios de debian (estandar), pero visto lo visto has encontrado las librerias en debian, asi que ya las tienes preparadas y listas...

Si estan en ese directorio, probablemente ya no tengas que hacer nada...

¿Has compilado? (me refiero a si has hecho la misma intentona que hiciste antes de empezar toda esta aventura...)

Si acaso lo has hecho y no ha tirado, escribe, y ya te cuento yo como lo haría... (Una vez ya las tienes instaladas y listas)

Tambien cuentame que archivo modificaste, y si puedes pegamelo, para que me oriente por donde van los tiros.

Suerte y saludos!!!

+1
0
-1
Imagen de sergiome
+1
0
-1

En el siguiente enlace esta el manual de donde me guié para lograr instalar el paquete opencv, ahi dice que archivos hay que modificar. (viene para varias versiones de ubuntu, la mia es la 7.04):

http://dircweb.king.ac.uk/reason/opencv_cvs.php

Ahora respondiendo tu pregunta, si intente complilar un archivo de los que vienen del link anterior como ejemplos, aca te dejo el link de ellos:

http://dircweb.king.ac.uk/reason/simple-examples.tar.gz

La duda que tengo es que, en los ejemplos que he visto de archivos en .c que utilizan el paquete opencv, ellos simplemente al inio del programa agregan las librerias mediante archivos .h que segun he leido son ficheros. A continuacoion te dejo un ejemplo de los que encontraras en el link que te deje renglones arriba. A lo que me refiero es a: "cv.h", "highgui.h"; de esta forma se agregan las librerias de opencv. Al intentar compilar con las librerias como las descargue desde apt-get (en otro pc no en el mio), me sale un error, diche que no existe el archivo cv.h ni el archivo "highgui.h". Estos archivos .h los tengo en mi pc en una carpeta pues la instalacion con el archivo .tar si los trae.

Intente dejarte una copia del archivoc cv.h, pero es demasiado extenso, no se como hacertelo llegar.

Espero me ayudes,,

gracias por tanta informacion y tanto tiempo resolviendo mis dudas,

--------------------------Ejemplo archivo .c---------se llama edge.c-----------------------

#ifndef _EiC
#include "cv.h"
#include "highgui.h"
#endif

char wndname[] = "Edge";
char tbarname[] = "Threshold";
int edge_thresh = 1;

IplImage *image = 0, *cedge = 0, *gray = 0, *edge = 0;

// define a trackbar callback
void on_trackbar(int h)
{
cvSmooth( gray, edge, CV_BLUR, 3, 3, 0, 0 );
cvNot( gray, edge );

// Run the edge detector on grayscale
cvCanny(gray, edge, (float)edge_thresh, (float)edge_thresh*3, 3);

cvZero( cedge );
// copy edge points
cvCopy( image, cedge, edge );

cvShowImage(wndname, cedge);
}

int main( int argc, char** argv )
{
char* filename = argc == 2 ? argv[1] : (char*)"foto18.jpg";//"fruits.jpg";

if( (image = cvLoadImage( filename, 1)) == 0 )
return -1;

// Create the output image
cedge = cvCreateImage(cvSize(image->width,image->height), IPL_DEPTH_8U, 3);

// Convert to grayscale
gray = cvCreateImage(cvSize(image->width,image->height), IPL_DEPTH_8U, 1);
edge = cvCreateImage(cvSize(image->width,image->height), IPL_DEPTH_8U, 1);
cvCvtColor(image, gray, CV_BGR2GRAY);

// Create a window
cvNamedWindow(wndname, 1);

// create a toolbar
cvCreateTrackbar(tbarname, wndname, &edge_thresh, 100, on_trackbar);

// Show the image
on_trackbar(0);

// Wait for a key stroke; the same function arranges events processing
cvWaitKey(0);
cvReleaseImage(&image);
cvReleaseImage(&gray);
cvReleaseImage(&edge);
cvDestroyWindow(wndname);

return 0;
}

#ifdef _EiC
main(1,"edge.c");
#endif

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

+1
0
-1
Imagen de Sanguinario_Joe
+1
0
-1

Admito no haber ojeado demasiado tus archivos (por falta de tiempo sobretodo), pero se lo que te pasa...

Veras, las librerias en si, son casi casi binarios ejecutables, luego su definicion no ni mucho menos trivial, y necesitan de cierta ayuda para poder ser usadas, esa ayuda son las cabeceras (*.h). Me explico...

Para la persona que usa el programa, estas cabeceras no son necesarias, pues el programa ya dice algo como, acude a este punto, y solo a este punto, de las librerias, de tal forma que el problema de conocer que hay alli se trivializa, y simplemente se asume que el programador sabia lo que hacia, pero cuando estas creando un programa, la cosa ya no es tan sencilla...

Entonces, en los header lo unico que viene es la declaracion de los metodos, pongamos un ejemplo...

Supongamos que yo tengo una funcion llamada suma, en un archivo suma.cpp, tal que:

float suma(float a, float b)
{
    return a+b;
}

Si quisiera usarla en mi main, tendria que hacer algo como:

int main(void)
{
    float suma(float a, float b);

    float a=1, b=2, sum;
    sum = suma(a, b);
    return 0;
}

Es decir, necesito declarar mi funcion. Pero si yo me creo un archivo cabecera llamado suma.h:

float suma(float a, float b);

podria hacer en main:

#include "suma.h"
int main(void)
{
    float a=1, b=2, sum;
    sum = suma(a, b);
    return 0;
}

Y funcionaria igual...

Si ahora imaginas que suma.cpp, no es un cpp, sino una libreria, suma.h nos indicaria que debemos buscar en la libreria. Esto es lo que hacen cv.h highgui.h

Bien, ¿y donde esta el problema entonces?

Pues es un simple problema notacional, si te vas a:

/usr/include/opencv

Veras que tienes esos dos archivos (que por tanto no tienes que llevar con el programa, y tampoco pasarme a mi...).

Lo que pasa es que cuando haces:

#include "cv.h"

El busca en el directorio donde tienes el codigo... Y no en el directorio donde deberia, lo que tienes que hacer es:

#include 

E igual con la otra... De esa forma buscara donde debe, que es en los directorios de las variabnles de entorno...

Pruebalo y me cuentas!!!

Saludos!!!

+1
0
-1
Imagen de sergiome
+1
0
-1

Entendi muy bien que son y para que sirven las cabeceras .h, pero no me qdo claro cuando me das la solucion:

>Lo que pasa es que cuando haces:
>#include "cv.h"
>El busca en el directorio donde tienes el codigo... Y no en el directorio donde deberia, lo que tienes que hacer es:
>#include
>E igual con la otra... De esa forma buscara donde debe, que es en los directorios de las variabnles de entorno...

Pues no le colocas ningun nombre ni direccion, despues de:

#include

Y al dejar asi mi archivo y compilarlo me dice error: #include esperando nombre de archivo.

Ahora, mira la solucion que intente fue copiar (los archivos .h) en la carpeta donde tengo mi codigo, y nada....me salen unos errores:

------------------------
root@smerchan-desktop:/opt/opencv/simple-examples# g++ -o edge edge.c
/tmp/ccI9iKm8.o: In function `on_trackbar(int)':
edge.c:(.text+0x3d): undefined reference to `cvSmooth'
edge.c:(.text+0x54): undefined reference to `cvNot'
edge.c:(.text+0x9f): undefined reference to `cvCanny'
edge.c:(.text+0xac): undefined reference to `cvSetZero'
edge.c:(.text+0xcd): undefined reference to `cvCopy'
edge.c:(.text+0xe2): undefined reference to `cvShowImage'
/tmp/ccI9iKm8.o: In function `main':
edge.c:(.text+0x130): undefined reference to `cvLoadImage'
edge.c:(.text+0x197): undefined reference to `cvCreateImage'
edge.c:(.text+0x1e4): undefined reference to `cvCreateImage'
edge.c:(.text+0x231): undefined reference to `cvCreateImage'
edge.c:(.text+0x255): undefined reference to `cvCvtColor'
edge.c:(.text+0x269): undefined reference to `cvNamedWindow'
edge.c:(.text+0x295): undefined reference to `cvCreateTrackbar'
edge.c:(.text+0x2ad): undefined reference to `cvWaitKey'
edge.c:(.text+0x2b9): undefined reference to `cvReleaseImage'
edge.c:(.text+0x2c5): undefined reference to `cvReleaseImage'
edge.c:(.text+0x2d1): undefined reference to `cvReleaseImage'
edge.c:(.text+0x2dd): undefined reference to `cvDestroyWindow'
collect2: ld devolvió el estado de salida 1
root@smerchan-desktop:/opt/opencv/simple-examples#

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

Supuse que era por que estaba compilando de la forma corta, no de la forma larga que usaba antes(pues con ella compila perfecto):

root@smerchan-desktop:/opt/opencv/simple-examples# g++ -o edge edge.c

Entonces decidi intentar descargar las librerias de opencv como tu me indicaste con apt-get; pero para sorpresa me salen errores al intentar descargarlas, al final del documento te adjunto la copia de los errores de descarga. Tambien presenta errores al actualizar los repositorios.

------------Errores al descargar librerias-------

root@smerchan-desktop:/opt/opencv/simple-examples# apt-get install libcvaux-dev
Leyendo lista de paquetes... Hecho
Creando árbol de dependencias
Leyendo información de estado... Hecho
Se instalarán los siguientes paquetes extras:
libcv-dev libcv1 libcvaux1 libhighgui-dev libhighgui1
Se instalarán los siguientes paquetes NUEVOS:
libcv-dev libcv1 libcvaux-dev libcvaux1 libhighgui-dev libhighgui1
0 actualizados, 6 se instalarán, 0 para eliminar y 202 no actualizados.
Necesito descargar 4453kB de archivos.
Se utilizarán 18,7MB de espacio de disco adicional después de desempaquetar.
¿Desea continuar [S/n]? S
AVISO: ¡No se han podido autenticar los siguientes paquetes!
libcv1 libcvaux1 libcvaux-dev libhighgui1 libhighgui-dev libcv-dev
¿Instalar estos paquetes sin verificación [s/N]? s
Err http://co.archive.ubuntu.com feisty/universe libcv1 1.0.0-1ubuntu1
404 Not Found [IP: 91.189.88.45 80]
Err http://co.archive.ubuntu.com feisty/universe libcvaux1 1.0.0-1ubuntu1
404 Not Found [IP: 91.189.88.45 80]
Err http://co.archive.ubuntu.com feisty/universe libcvaux-dev 1.0.0-1ubuntu1
404 Not Found [IP: 91.189.88.45 80]
Err http://co.archive.ubuntu.com feisty/universe libhighgui1 1.0.0-1ubuntu1
404 Not Found [IP: 91.189.88.45 80]
Err http://co.archive.ubuntu.com feisty/universe libhighgui-dev 1.0.0-1ubuntu1
404 Not Found [IP: 91.189.88.45 80]
Err http://co.archive.ubuntu.com feisty/universe libcv-dev 1.0.0-1ubuntu1
404 Not Found [IP: 91.189.88.45 80]
Imposible obtener http://co.archive.ubuntu.com/ubuntu/pool/universe/o/opencv/libcv1_1.0.0-... 404 Not Found [IP: 91.189.88.45 80]
Imposible obtener http://co.archive.ubuntu.com/ubuntu/pool/universe/o/opencv/libcvaux1_1.0... 404 Not Found [IP: 91.189.88.45 80]
Imposible obtener http://co.archive.ubuntu.com/ubuntu/pool/universe/o/opencv/libcvaux-dev_... 404 Not Found [IP: 91.189.88.45 80]
Imposible obtener http://co.archive.ubuntu.com/ubuntu/pool/universe/o/opencv/libhighgui1_1... 404 Not Found [IP: 91.189.88.45 80]
Imposible obtener http://co.archive.ubuntu.com/ubuntu/pool/universe/o/opencv/libhighgui-de... 404 Not Found [IP: 91.189.88.45 80]
Imposible obtener http://co.archive.ubuntu.com/ubuntu/pool/universe/o/opencv/libcv-dev_1.0... 404 Not Found [IP: 91.189.88.45 80]
E: No se pudieron obtener algunos archivos, ¿quizás deba ejecutar
apt-get update o deba intentarlo de nuevo con --fix-missing?
root@smerchan-desktop:/opt/opencv/simple-examples#

------------Errores al actualizar los repositorios---------------
root@smerchan-desktop:/opt/opencv/simple-examples# apt-get update
Ign cdrom://Ubuntu 7.04 _Feisty Fawn_ - Release i386 (20070415) feisty/main Translation-es
Ign cdrom://Ubuntu 7.04 _Feisty Fawn_ - Release i386 (20070415) feisty/restricted Translation-es
Ign http://co.archive.ubuntu.com feisty Release.gpg
Ign http://co.archive.ubuntu.com feisty/main Translation-es
Des:1 http://security.ubuntu.com feisty-security Release.gpg [189B]
Ign http://security.ubuntu.com feisty-security/main Translation-es
Ign http://co.archive.ubuntu.com feisty/restricted Translation-es
Ign http://co.archive.ubuntu.com feisty/universe Translation-es
Ign http://co.archive.ubuntu.com feisty/multiverse Translation-es
Des:2 http://co.archive.ubuntu.com feisty-updates Release.gpg [189B]
Ign http://co.archive.ubuntu.com feisty-updates/main Translation-es
Ign http://co.archive.ubuntu.com feisty-updates/restricted Translation-es
Ign http://co.archive.ubuntu.com feisty Release
Ign http://security.ubuntu.com feisty-security/restricted Translation-es
Ign http://security.ubuntu.com feisty-security/universe Translation-es
Ign http://security.ubuntu.com feisty-security/multiverse Translation-es
Obj http://security.ubuntu.com feisty-security Release
Obj http://co.archive.ubuntu.com feisty-updates Release
Obj http://security.ubuntu.com feisty-security/main Packages
Ign http://co.archive.ubuntu.com feisty/main Packages
Ign http://co.archive.ubuntu.com feisty/restricted Packages
Ign http://co.archive.ubuntu.com feisty/main Sources
Ign http://co.archive.ubuntu.com feisty/restricted Sources
Ign http://co.archive.ubuntu.com feisty/universe Packages
Obj http://security.ubuntu.com feisty-security/restricted Packages
Obj http://security.ubuntu.com feisty-security/main Sources
Obj http://security.ubuntu.com feisty-security/restricted Sources
Ign http://co.archive.ubuntu.com feisty/universe Sources
Ign http://co.archive.ubuntu.com feisty/multiverse Packages
Ign http://co.archive.ubuntu.com feisty/multiverse Sources
Obj http://co.archive.ubuntu.com feisty-updates/main Packages
Obj http://co.archive.ubuntu.com feisty-updates/restricted Packages
Obj http://co.archive.ubuntu.com feisty-updates/main Sources
Obj http://co.archive.ubuntu.com feisty-updates/restricted Sources
Obj http://security.ubuntu.com feisty-security/universe Packages
Obj http://security.ubuntu.com feisty-security/universe Sources
Obj http://security.ubuntu.com feisty-security/multiverse Packages
Obj http://security.ubuntu.com feisty-security/multiverse Sources
Err http://co.archive.ubuntu.com feisty/main Packages
404 Not Found [IP: 91.189.88.31 80]
Err http://co.archive.ubuntu.com feisty/restricted Packages
404 Not Found [IP: 91.189.88.31 80]
Err http://co.archive.ubuntu.com feisty/main Sources
404 Not Found [IP: 91.189.88.31 80]
Err http://co.archive.ubuntu.com feisty/restricted Sources
404 Not Found [IP: 91.189.88.31 80]
Err http://co.archive.ubuntu.com feisty/universe Packages
404 Not Found [IP: 91.189.88.31 80]
Err http://co.archive.ubuntu.com feisty/universe Sources
404 Not Found [IP: 91.189.88.31 80]
Err http://co.archive.ubuntu.com feisty/multiverse Packages
404 Not Found [IP: 91.189.88.31 80]
Err http://co.archive.ubuntu.com feisty/multiverse Sources
404 Not Found [IP: 91.189.88.31 80]
Descargados 2B en 1s (1B/s)
Imposible obtener http://co.archive.ubuntu.com/ubuntu/dists/feisty/main/binary-i386/Packag... 404 Not Found [IP: 91.189.88.31 80]
Imposible obtener http://co.archive.ubuntu.com/ubuntu/dists/feisty/restricted/binary-i386/... 404 Not Found [IP: 91.189.88.31 80]
Imposible obtener http://co.archive.ubuntu.com/ubuntu/dists/feisty/main/source/Sources.gz 404 Not Found [IP: 91.189.88.31 80]
Imposible obtener http://co.archive.ubuntu.com/ubuntu/dists/feisty/restricted/source/Sourc... 404 Not Found [IP: 91.189.88.31 80]
Imposible obtener http://co.archive.ubuntu.com/ubuntu/dists/feisty/universe/binary-i386/Pa... 404 Not Found [IP: 91.189.88.31 80]
Imposible obtener http://co.archive.ubuntu.com/ubuntu/dists/feisty/universe/source/Sources.gz 404 Not Found [IP: 91.189.88.31 80]
Imposible obtener http://co.archive.ubuntu.com/ubuntu/dists/feisty/multiverse/binary-i386/... 404 Not Found [IP: 91.189.88.31 80]
Imposible obtener http://co.archive.ubuntu.com/ubuntu/dists/feisty/multiverse/source/Sourc... 404 Not Found [IP: 91.189.88.31 80]
Leyendo lista de paquetes... Hecho
E: Algunos archivos de índice no se han podido descargar, se han ignorado,
o se ha utilizado unos antiguos en su lugar.
root@smerchan-desktop:/opt/opencv/simple-examples#

+1
0
-1
Imagen de Sanguinario_Joe
+1
0
-1

Si, es un problema de Tags, yo lo pongo en el post, pero el me mlo interpreta mal (si sabes algo de html te imaginaras de lo que hablo).

Queria decir esto:

Lo que pasa es que cuando haces:
#include "cv.h"
El busca en el directorio donde tienes el codigo... Y no en el directorio donde deberia, lo que tienes que hacer es:
#include <cv.h>
E igual con la otra... De esa forma buscara donde debe, que es en los directorios de las variables de entorno...

Con esto ya puedes compilar...

Respecto a tu error, haz una cosa, escribe:

sudo gedit /etc/apt/sources.list

Y me copias el archivo, porque al final del "update" parece estar haciendote cosas raras (repositorios mal escritos tal vez...)

Saludos!!!

+1
0
-1
Imagen de sergiome
+1
0
-1

tambien lo intente con , pues asi vi algunos ejemplos en internet, pero nada, por eso pense que era por que no tenia instaladas las librerias como tu dijiste con apt-get.

Gracias por seguirme ayudando.pero la verdad es muy importante es un trabajo para la Universidad

----------copia del achivo q pediste, el de los sources--------
# See http://help.ubuntu.com/community/UpgradeNotes for how to upgrade to
# newer versions of the distribution.

deb cdrom:[Ubuntu 7.04 _Feisty Fawn_ - Release i386 (20070415)]/ feisty main restricted
deb http://co.archive.ubuntu.com/ubuntu/ feisty main restricted
deb-src http://co.archive.ubuntu.com/ubuntu/ feisty main restricted

## Major bug fix updates produced after the final release of the
## distribution.
deb http://co.archive.ubuntu.com/ubuntu/ feisty-updates main restricted
deb-src http://co.archive.ubuntu.com/ubuntu/ feisty-updates main restricted

## N.B. software from this repository is ENTIRELY UNSUPPORTED by the Ubuntu
## team, and may not be under a free licence. Please satisfy yourself as to
## your rights to use the software. Also, please note that software in
## universe WILL NOT receive any review or updates from the Ubuntu security
## team.
deb http://co.archive.ubuntu.com/ubuntu/ feisty universe
deb-src http://co.archive.ubuntu.com/ubuntu/ feisty universe

## N.B. software from this repository is ENTIRELY UNSUPPORTED by the Ubuntu
## team, and may not be under a free licence. Please satisfy yourself as to
## your rights to use the software. Also, please note that software in
## multiverse WILL NOT receive any review or updates from the Ubuntu
## security team.
deb http://co.archive.ubuntu.com/ubuntu/ feisty multiverse
deb-src http://co.archive.ubuntu.com/ubuntu/ feisty multiverse

## Uncomment the following two lines to add software from the 'backports'
## repository.
## N.B. software from this repository may not have been tested as
## extensively as that contained in the main release, although it includes
## newer versions of some applications which may provide useful features.
## Also, please note that software in backports WILL NOT receive any review
## or updates from the Ubuntu security team.
# deb http://co.archive.ubuntu.com/ubuntu/ feisty-backports main restricted universe multiverse
# deb-src http://co.archive.ubuntu.com/ubuntu/ feisty-backports main restricted universe multiverse

deb http://security.ubuntu.com/ubuntu feisty-security main restricted
deb-src http://security.ubuntu.com/ubuntu feisty-security main restricted
deb http://security.ubuntu.com/ubuntu feisty-security universe
deb-src http://security.ubuntu.com/ubuntu feisty-security universe
deb http://security.ubuntu.com/ubuntu feisty-security multiverse
deb-src http://security.ubuntu.com/ubuntu feisty-security multiverse

+1
0
-1
Imagen de Sanguinario_Joe
+1
0
-1

Parece que es el servidor, haz una cosa...

A) Si tienes interfaz grafica
Vete a:

Sistema/Administracion/Origenes del software

Y en la pestaña Software de Ubuntu, marca todas las casillas y cambia donde pone "Descargar desde:" a "Servidor principal"

B) Si no tienes interfaz grafica
Escribe en la terminal:

sudo gedit /etc/apt/sources.list

Y cambia todas estas direcciones (Colombia ¿no?):

http://co.archive.ubuntu.com/ubuntu/

Por estas:

http://archive.ubuntu.com/ubuntu/

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

La idea es que el servidor de colombia esta caido, o no responde a feisty (Que por cierto no estaria de mas actualizar ubuntu ;-D ), con ese cambio acudes a los servidores principales (esto no cambia el idioma ni nada por el estilo).

Ahora ya puedes hacer en una terminal:

sudo apt-get update

Y luego instalar las librerias:

sudo apt-get install libcv1 libcv-dev libcvaux1 libcvaux-dev libhighgui1 libhighgui-dev

Una vez lo hayas hecho me cuentas a ver como te fue...

Si se te instala bien, trata de compilar, y me mandas el comando que usas para compilar (y si acaso hace falta, los fuentes = no cv.h ni ninguno de la libreria).

Saludos!!!

+1
0
-1
Imagen de sergiome
+1
0
-1

Hice el cambio de Origenes de Software que me sugeriste, pero nada, todo sigue igual, ahora tampoco actializa con apt-get update, y al darle:

apt-cache search opencv

Ya no encuentra nada.

Lei en internet, que ya no hay soporte para esta version de ubuntu 7.04.
Ahora supongo que debo actualizar mi ubuntu, esa actualizacion la debo hacer desistalando el ubuntu 7.04 y luego instalando la nueva version (8.04 o superior)???.
O simplemente al encender mi pc sale un letrero que dice que hay tantas actualizaciones disponibles.

De cual de las dos formas es mejor actualizarlo???

Gracias

----------------------------
# See http://help.ubuntu.com/community/UpgradeNotes for how to upgrade to
# newer versions of the distribution.

deb cdrom:[Ubuntu 7.04 _Feisty Fawn_ - Release i386 (20070415)]/ feisty main restricted
deb http://archive.ubuntu.com/ubuntu/ feisty main restricted
deb-src http://archive.ubuntu.com/ubuntu/ feisty main restricted

## Major bug fix updates produced after the final release of the
## distribution.
deb http://archive.ubuntu.com/ubuntu/ feisty-updates main restricted
deb-src http://archive.ubuntu.com/ubuntu/ feisty-updates main restricted

## N.B. software from this repository is ENTIRELY UNSUPPORTED by the Ubuntu
## team, and may not be under a free licence. Please satisfy yourself as to
## your rights to use the software. Also, please note that software in
## universe WILL NOT receive any review or updates from the Ubuntu security
## team.
deb http://archive.ubuntu.com/ubuntu/ feisty universe
deb-src http://archive.ubuntu.com/ubuntu/ feisty universe

## N.B. software from this repository is ENTIRELY UNSUPPORTED by the Ubuntu
## team, and may not be under a free licence. Please satisfy yourself as to
## your rights to use the software. Also, please note that software in
## multiverse WILL NOT receive any review or updates from the Ubuntu
## security team.
deb http://archive.ubuntu.com/ubuntu/ feisty multiverse
deb-src http://archive.ubuntu.com/ubuntu/ feisty multiverse

## Uncomment the following two lines to add software from the 'backports'
## repository.
## N.B. software from this repository may not have been tested as
## extensively as that contained in the main release, although it includes
## newer versions of some applications which may provide useful features.
## Also, please note that software in backports WILL NOT receive any review
## or updates from the Ubuntu security team.
# deb http://co.archive.ubuntu.com/ubuntu/ feisty-backports main restricted universe multiverse
# deb-src http://co.archive.ubuntu.com/ubuntu/ feisty-backports main restricted universe multiverse

deb http://archive.ubuntu.com/ubuntu/ feisty-security main restricted
deb-src http://archive.ubuntu.com/ubuntu/ feisty-security main restricted
deb http://archive.ubuntu.com/ubuntu/ feisty-security universe
deb-src http://archive.ubuntu.com/ubuntu/ feisty-security universe
deb http://archive.ubuntu.com/ubuntu/ feisty-security multiverse
deb-src http://archive.ubuntu.com/ubuntu/ feisty-security multivers

+1
0
-1
Imagen de Sanguinario_Joe
+1
0
-1

Primero de todo, instalate todas las actualizaciones que te propone, con eso tendras a la ultima el feisty

Y luego, para actualizar, puedes hacerlo con:

sudo update-manager -d

Y supongo que no te dara muchos problemas...

Saludos!!!

+1
0
-1
Imagen de sergiome
+1
0
-1

Buenas noches,,,,,,,
estaba un poco ocupado, actualizando e instalando las linrerias de opencv.

Estuve averiguando y encontre un manual de como compilar con gcc:

http://arco.esi.uclm.es/~david.villa/doc/repo/librerias/librerias.html

En ellos encontre la forma de incluir las cabeceras de mis programas (.h) y los directorios de las librerias que se utilizan.

Basados en ellos intente compilar, de frma estatica y de forma dinamica; la dinamica :

root@smerchan-desktop:/opt/opencv/simple-examples# gcc -I/usr/include -o prueba3 prueba3.c -L/-lcxcore -lcv -lhighgui -lcvaux -lm

y la estatica:

root@smerchan-desktop:/opt/opencv/simple-examples# gcc -I/usr/include -static -o prueba3 prueba3.c -L/-lcxcore -lcv -lhighgui -lcvaux -lm

Con la dinamica todo normal, funciona perfecto; pero la estatica me bota errores, a continuacion le copio la parte final de lo que sale en el terminal despues de darle compilar:

--------
/usr/lib/gcc/i486-linux-gnu/4.1.2/../../../../lib/libhighgui.a(bitstrm.o):(.data.rel.ro._ZTI12RLByteStream[typeinfo for RLByteStream]+0x0): undefined reference to `vtable for __cxxabiv1::__si_class_type_info'
/usr/lib/gcc/i486-linux-gnu/4.1.2/../../../../lib/libhighgui.a(bitstrm.o):(.data.rel.ro._ZTI11RBaseStream[typeinfo for RBaseStream]+0x0): undefined reference to `vtable for __cxxabiv1::__class_type_info'
collect2: ld devolvió el estado de salida 1
root@smerchan-desktop:/opt/opencv/simple-examples#
--------

La libreria libhighgui.a, aparece en /usr/lib, y asi las otras, y si tengo instaladas las libreias estaticas.

Gracias........

como siempre , espero me puedas ayudar.

+1
0
-1
Imagen de Sanguinario_Joe
+1
0
-1

Basicamente, hasta aqui podia ayudarte yo, pero en eso me parece que ya no puedo ayudarte...

La idea es que tienes referencias incompletas, que parece que van desde el codigo (ya no es un problema de que no encuentre las librerias, sino de que dentro de ellas algo no linka bien)

Estas seguro de que has usado la misma version de las librerias tanto en dinamicas como en estaticas??

Suerte y saludos!!!

+1
0
-1
Imagen de Sanguinario_Joe
+1
0
-1

Tienes algo mal ¿no?

Mira, tu has puesto esto (estatica):

gcc -I/usr/include -static -o prueba3 prueba3.c -L/-lcxcore -lcv -lhighgui -lcvaux -lm

la ultima bandera que pones es -lm, que es la libreria matematica ¿no?

Yo me he ido al synaptic, he buscado opencv, y en los paquetes "-dev" he mirado los archivos instalados por los siguientes paquetes:

libcv-dev
libcvaux-dev
libhighgui-dev

Y el total de liberias estaticas es:

libcv-dev
   libcv.a
   libcxcore.a
   libml.a
   libcvhaartraining.a
libcvaux-dev
   libcvaux.a
libhighgui-dev
   libhighgui.a

Asi que prueba esta orden, a ver que ocurre:

gcc -I/usr/include -static -o prueba3 prueba3.c -L/-lcxcore -lcv -lml -lcvhaartraining -lhighgui -lcvaux -lm

Suerte y saludos!!!

+1
0
-1