Bonjour,
j'installe opencv sur mon RPI pour faire de la capture et du traitement d'images.
De tout ce que j'ai lu, il faut disposer de la lib mmal également. Et c'est cette dernière qui me pose problème qd je compile un programme de test (raspicamtest.c).
Le makefile que j'utilise:
La sortie du makefile:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63 OBJS = objs CFLAGS_OPENCV = -I/usr/include/opencv LDFLAGS2_OPENCV = -lopencv_highgui -lopencv_core -lopencv_legacy -lopencv_video -lopencv_features2d -lopencv_calib3d -lopencv_imgproc -lpthread -lm USERLAND_ROOT = $(HOME)/git/raspberrypi/userland CFLAGS_PI = \ -I$(USERLAND_ROOT)/host_applications/linux/libs/bcm_host/include \ -I$(USERLAND_ROOT)/host_applications/linux/apps/raspicam \ -I$(USERLAND_ROOT) \ -I$(USERLAND_ROOT)/interface/vcos/pthreads \ -I$(USERLAND_ROOT)/interface/vmcs_host/linux \ -I$(USERLAND_ROOT)/interface/mmal \ LDFLAGS_PI = -L$(USERLAND_ROOT)/build/lib -lmmal_core -lmmal -lmmal_util -lvcos -lbcm_host BUILD_TYPE=debug #BUILD_TYPE=release CFLAGS_COMMON = -Wno-multichar -g $(CFLAGS_OPENCV) $(CFLAGS_PI) -MD ifeq ($(BUILD_TYPE), debug) CFLAGS = $(CFLAGS_COMMON) endif ifeq ($(BUILD_TYPE), release) CFLAGS = $(CFLAGS_COMMON) -O3 endif LDFLAGS = LDFLAGS2 = $(LDFLAGS2_OPENCV) $(LDFLAGS_PI) -lX11 -lXext -lrt -lstdc++ RASPICAMCV_OBJS = \ $(OBJS)/RaspiCamControl.o \ $(OBJS)/RaspiCLI.o \ $(OBJS)/RaspiCamCV.o \ RASPICAMTEST_OBJS = \ $(OBJS)/RaspiCamTest.o \ TARGETS = libraspicamcv.a raspicamtest libraspicamcv.so all: $(TARGETS) $(OBJS)/%.o: %.c gcc -c $(CFLAGS) $< -o $@ $(OBJS)/%.o: $(USERLAND_ROOT)/host_applications/linux/apps/raspicam/%.c gcc -c $(CFLAGS) $< -o $@ libraspicamcv.a: $(RASPICAMCV_OBJS) ar rcs libraspicamcv.a -o $+ libraspicamcv.so: $(RASPICAMCV_OBJS) gcc -shared -o libraspicamcv.so $+ -Wl,-whole-archive $(LDFLAGS_PI) -lopencv_core -lopencv_highgui -Wl,-no-whole-archive raspicamtest: $(RASPICAMTEST_OBJS) libraspicamcv.a gcc $(LDFLAGS) $+ $(LDFLAGS2) -L. libraspicamcv.a -o $@ clean: rm -f $(OBJS)/* $(TARGETS) -include $(OBJS)/*.d
Le path du RPI:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17 make gcc objs/RaspiCamTest.o libraspicamcv.a -lopencv_highgui -lopencv_core -lopencv_legacy -lopencv_video -lopencv_features2d -lopencv_calib3d -lopencv_imgproc -lpthread -lm -L/home/pi/git/raspberrypi/userland/build/lib -lmmal_core -lmmal -lmmal_util -lvcos -lbcm_host -lX11 -lXext -lrt -lstdc++ -L. libraspicamcv.a -o raspicamtest libraspicamcv.a(RaspiCamControl.o): In function `raspicamcontrol_set_saturation': /home/pi/git/raspberrypi/userland/host_applications/linux/apps/raspicam/RaspiCamControl.c:1086: undefined reference to `mmal_status_to_int' libraspicamcv.a(RaspiCamControl.o): In function `raspicamcontrol_set_sharpness': /home/pi/git/raspberrypi/userland/host_applications/linux/apps/raspicam/RaspiCamControl.c:1112: undefined reference to `mmal_status_to_int' libraspicamcv.a(RaspiCamControl.o): In function `raspicamcontrol_set_contrast': /home/pi/git/raspberrypi/userland/host_applications/linux/apps/raspicam/RaspiCamControl.c:1139: undefined reference to `mmal_status_to_int' libraspicamcv.a(RaspiCamControl.o): In function `raspicamcontrol_set_brightness': /home/pi/git/raspberrypi/userland/host_applications/linux/apps/raspicam/RaspiCamControl.c:1166: undefined reference to `mmal_status_to_int' libraspicamcv.a(RaspiCamControl.o): In function `raspicamcontrol_set_ISO': /home/pi/git/raspberrypi/userland/host_applications/linux/apps/raspicam/RaspiCamControl.c:1188: undefined reference to `mmal_status_to_int' libraspicamcv.a(RaspiCamControl.o):/home/pi/git/raspberrypi/userland/host_applications/linux/apps/raspicam/RaspiCamControl.c:1209: more undefined references to `mmal_status_to_int' follow collect2: error: ld returned 1 exit status Makefile:57: recipe for target 'raspicamtest' failed make: *** [raspicamtest] Error 1
ldconfig -p |grep libmmal donne:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 /usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/local/games:/usr/games:/usr/local/lib:/usr/local/include:/usr/lib/gcc/arm-linux-gnueabihf/perl/5.20.2/CORE:/opt/vc/lib:/opt/vc/include
La série de "undefined reference" me fait penser à une librairie inaccessible mais je ne vois pas laquelle. Pourtant tout me semble correctement installé et accessible.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6 libmmal_vc_client.so (libc6,hard-float) => /opt/vc/lib/libmmal_vc_client.so libmmal_util.so (libc6,hard-float) => /opt/vc/lib/libmmal_util.so libmmal_core.so (libc6,hard-float) => /opt/vc/lib/libmmal_core.so libmmal_components.so (libc6,hard-float) => /opt/vc/lib/libmmal_components.so libmmal.so (libc6,hard-float) => /opt/vc/lib/libmmal.so
Merci pour vos avis.
Partager