-
Programmation C OneWire
Bonjour,
J'ai installé Dallas OneWire sur un Raspberry Pi en USB (owfs-2.8p15.tar.gz ...)
Je détecte bien mes composants /mnt/1wire/ ...
Quand j'essaie un prog mini en c (avec Geany et gcc):
...
#include <owcapi.h>
...
OW_init("usb");
OW_set_error_print("2");
...
Tout va bien quand je compile, j'obtiens bien le .o
mais quand je construit j'ai : undefined reference to 'OW_init'
par exemple pour toutes mes fonctions appelées du type OW_.
Merci.
-
Bonjour,
Il manque une option du linker pour lui dire de prendre la bibliothèque utilisée. Voir du côté de -l (L minuscule) pour ajouter une bibliothèque et -L pour ajouter le chemin vers la bibliothèque si celle-ci n'est pas située dans une chemin "standard" de recherche du linker. Voir par exemple ici : http://gradot.wordpress.com/2013/11/...statique-en-c/
-
Merci.
je n'y suis pas arrivé comme ça, mais en créant un makefile partiellement trouvé sur internet :
CFLAGS = -g -I/usr/include
OBJS = Essai_1.o
all: Essai_1
# Compile-flags for Linux and Cygwin
LDFLAGS = -L/usr/lib -Wl,--rpath -Wl,/usr/lib -lowcapi
Essai_1: $(OBJS)
gcc $(CFLAGS) -o $@ $(OBJS) $(LDFLAGS)
%.o: %.c
gcc $(CFLAGS) -c -o $@ $<
clean:
Si ça peut aider qqun.
-
Regarde bien ce que contient LDFLAGS : -l et -L
Sauf si le second -Wl fait le taff que ne ferait le -L mais je pense que les 2 options sont redondantes.
-
En effet, ça marche,
mon construire ds Geany :
gcc -Wall -o "%e" "%f" -L/usr/lib -Wl,--rpath -Wl,/usr/lib -lowcapi
Merci.
-
De rien ;)
Bon courage pour la suite.