Ver la versión completa : Duda libreria linux y acepto collejas despues
crossmax
28/05/2014, 18:57
Buenas familia,
Una vez mas pregunto por aquí mis dudas de lerdo sobre desarrollo software en linux. Siento ser tan pesado, pero sois tan efectivos....[Ahhh]
El caso es que me esta costando saber por donde buscar y necesito ese empujoncito. Quiero hacer una dll (ya sé que en linux no se llama así [libreria]) intermedia entre un driver de un lector de tarjetas con contacto y una aplicación externa. Si no me equivoco deberia incluir la libreria libccid.so en mi proyecto de "libreria intermedia" para abrir, leer y cerrar el lector, tratar esos datos y dejar accesibles un par de funciones para obtener los resultados.
Ahora bien, como sé que funciones son accesibles de la libccid.so???
Gracias again!!
Propeller
28/05/2014, 20:52
http://stackoverflow.com/questions/34732/how-do-i-list-the-symbols-in-a-so-file
crossmax
29/05/2014, 10:21
Muchas gracias!!
Ya voy abriendo nuevos frentes y voy avanzando en saber lo que necesito.
Contaré mis avances!
crossmax
29/05/2014, 14:01
Por aqui volvemos :lamer:
Estoy intentando probar un ejemplo que he visto en la web del creador de la libreria libpcsclite que deberia ser capaz de leer de un lector de tarjetas con chip pero al compilarlo me dice que las funciones de la libreria en cuestion no estan definidas, por lo que debe estar mal incluida la libreria en la compilacion. Sin embargo, si lo compilo en un servidor virtual que tengo con linux me lo hace sin problemas.
He probado con el Makefile que facilitan en el ejemplo:
# Linux
PCSC_CFLAGS := $(shell pkg-config --cflags libpcsclite)
LDFLAGS := $(shell pkg-config --libs libpcsclite)
# Mac OS X
#PCSC_CFLAGS := -framework PCSC
CFLAGS += $(PCSC_CFLAGS)
sample: sample.c
clean: rm -f sample
o directamente con:
gcc -I/usr/include/PCSC -lpcsclite sample.c -o sample
En /usr/include/PCSC estan las cabeceras y la libreria está localizada en /usr/lib/i386-linux-gnu po rlo que tambien he probado con:
sudo gcc -I/usr/include/PCSC -lpcsclite -L/usr/lib/i386-linux-gnu sample.c -o sample
Que me puede estar pasando???
Este es el resultado que obtengo siempre:
/tmp/ccgDRlOP.o: En la función `main':
sample.c:(.text+0x9b): referencia a `SCardEstablishContext' sin definir
sample.c:(.text+0xb2): referencia a `pcsc_stringify_error' sin definir
sample.c:(.text+0xf8): referencia a `SCardListReaders' sin definir
sample.c:(.text+0x10f): referencia a `pcsc_stringify_error' sin definir
sample.c:(.text+0x171): referencia a `SCardConnect' sin definir
sample.c:(.text+0x188): referencia a `pcsc_stringify_error' sin definir
sample.c:(.text+0x1b7): referencia a `g_rgSCardT0Pci' sin definir
sample.c:(.text+0x1bd): referencia a `g_rgSCardT0Pci' sin definir
sample.c:(.text+0x1cc): referencia a `g_rgSCardT1Pci' sin definir
sample.c:(.text+0x1d2): referencia a `g_rgSCardT1Pci' sin definir
sample.c:(.text+0x21f): referencia a `SCardTransmit' sin definir
sample.c:(.text+0x236): referencia a `pcsc_stringify_error' sin definir
sample.c:(.text+0x2e5): referencia a `SCardTransmit' sin definir
sample.c:(.text+0x2fc): referencia a `pcsc_stringify_error' sin definir
sample.c:(.text+0x37b): referencia a `SCardDisconnect' sin definir
sample.c:(.text+0x392): referencia a `pcsc_stringify_error' sin definir
sample.c:(.text+0x3c0): referencia a `SCardFreeMemory' sin definir
sample.c:(.text+0x3d7): referencia a `pcsc_stringify_error' sin definir
sample.c:(.text+0x3fa): referencia a `SCardReleaseContext' sin definir
sample.c:(.text+0x411): referencia a `pcsc_stringify_error' sin definir
collect2: error: ld returned 1 exit status
Gracias
-----Actualizado-----
Vaya, vaya. Ya he encontrado la solucion a mi problema.
Tan facil como indicar la libreria en el ultimo parametro de gcc:
gcc -I/usr/include/PCSC sample.c -o sample -lpcsclite
Otra colleja que me he ganado!
Propeller
29/05/2014, 20:06
Otra colleja que me he ganado!
Nadie nace sabiendo, hombre.
Tan facil como indicar la libreria en el ultimo parametro de gcc:
El orden de los parámetros importa: primero tienes que poner "el archivo que va a usar algo" y después "el archivo usado". Si lo haces al revés, gcc lanza errores. ¡Las librerías siempre se ponen al final de la línea!
Lo notarás cuando uses varias librerías: "-lb -la" no es lo mismo que "-la -lb", sobre todo si la liba usa la libb :)
Lo notarás cuando uses varias librerías: "-lb -la" no es lo mismo que "-la -lb", sobre todo si la liba usa la libb :)
los compiladores tan listos y tan tontos
Aiken
crossmax
29/05/2014, 22:22
Después de esto ya no se me olvida, seguro.
Me ha gustado eso de a veces tan listos y otras tan tontos, jeje.
Muchas gracias a todos
Enviado desde mi UMI X2 mediante Tapatalk
Powered by vBulletin® Version 4.2.5 Copyright © 2025 vBulletin Solutions Inc. All rights reserved.