Partage
  • Partager sur Facebook
  • Partager sur Twitter

Makefile et librairie

    21 mai 2021 à 9:25:25

    le dossier de la lib est organisé comme suit :

    $ tree
    .
    ├── basedebug.cc
    ├── basedebug.hh
    ├── basedebugtype.hh
    ├── basefatal.cc
    ├── basefatal.hh
    ├── library.properties
    ├── umlrtapi.cc
    ├── umlrtapi.hh
    ├── umlrtbasicthread.cc
    ├── umlrtbasicthread.hh
    ├── umlrtcapsule.cc
    ├── umlrtcapsule.hh
    ├── umlrtcapsuleclass.hh
    ├── umlrtcapsuleid.cc
    ├── umlrtcapsuleid.hh
    ├── umlrtcapsulepart.hh
    ├── umlrtcapsulerole.hh
    ├── umlrtcapsuletocontrollermap.cc
    ├── umlrtcapsuletocontrollermap.hh
    ├── umlrtcommsport.cc
    ├── umlrtcommsport.hh
    ├── umlrtcommsportfarend.hh
    ├── umlrtcommsportrole.hh
    ├── umlrtcontroller.cc
    ├── umlrtcontroller.hh
    ├── umlrtcontrollercommand.hh
    ├── umlrtframeprotocol.cc
    ├── umlrtframeprotocol.hh
    ├── umlrtframeservice.cc
    ├── umlrtframeservice.hh
    ├── umlrtgetopt.cc
    ├── umlrtgetopt.hh
    ├── umlrtguard.hh
    ├── umlrthashmap.cc
    ├── umlrthashmap.hh
    ├── umlrtinoutsignal.cc
    ├── umlrtinoutsignal.hh
    ├── umlrtinsignal.cc
    ├── umlrtinsignal.hh
    ├── umlrtlogprotocol.cc
    ├── umlrtlogprotocol.hh
    ├── umlrtmain.cc
    ├── umlrtmain.hh
    ├── umlrtmainloop.cc
    ├── umlrtmaintargetshutdown.cc
    ├── umlrtmaintargetstartup.cc
    ├── umlrtmessage.cc
    ├── umlrtmessage.hh
    ├── umlrtmessagepool.cc
    ├── umlrtmessagepool.hh
    ├── umlrtmessagequeue.cc
    ├── umlrtmessagequeue.hh
    ├── umlrtmutex.hh
    ├── umlrtobjectclass.cc
    ├── umlrtobjectclass.hh
    ├── umlrtobjectclassgeneric.hh
    ├── umlrtoutsignal.cc
    ├── umlrtoutsignal.hh
    ├── umlrtpool.cc
    ├── umlrtpool.hh
    ├── umlrtpriority.hh
    ├── umlrtprioritymessagequeue.cc
    ├── umlrtprioritymessagequeue.hh
    ├── umlrtprotocol.cc
    ├── umlrtprotocol.hh
    ├── umlrtqueue.cc
    ├── umlrtqueue.hh
    ├── umlrtqueueelement.hh
    ├── umlrtrtsinterface.hh
    ├── umlrtrtsinterfaceumlrt.cc
    ├── umlrtrtsinterfaceumlrt.hh
    ├── umlrtsemaphore.hh
    ├── umlrtsignal.cc
    ├── umlrtsignal.hh
    ├── umlrtsignalelement.cc
    ├── umlrtsignalelement.hh
    ├── umlrtsignalelementpool.cc
    ├── umlrtsignalelementpool.hh
    ├── umlrtslot.hh
    ├── umlrttimer.hh
    ├── umlrttimerid.cc
    ├── umlrttimerid.hh
    ├── umlrttimerpool.cc
    ├── umlrttimerpool.hh
    ├── umlrttimerprotocol.cc
    ├── umlrttimerprotocol.hh
    ├── umlrttimerqueue.cc
    ├── umlrttimerqueue.hh
    ├── umlrttimespec.cc
    ├── umlrttimespec.hh
    └── umlrtuserconfig.hh
    
    

    avec comme fichier de propriété :

    $ cat library.properties 
    name=RTS
    version=0.1
    author=azerty
    maintainer=azerty
    sentence=Library for UML-RT.
    paragraph=Library for UML-RT.
    category=Device controle
    url=https://gricad-gitlab.univ-grenoble-alpes.fr/hilin/uml-rt-port-for-arduino
    architectures=*
    

    avec l'archivage

    zip -r umlrt umlrt
    updating: umlrt/ (stored 0%)
    updating: umlrt/umlrtapi.hh (deflated 59%)
    updating: umlrt/umlrtbasicthread.hh (deflated 59%)
    updating: umlrt/umlrtcapsule.hh (deflated 65%)
    updating: umlrt/umlrtcapsuleclass.hh (deflated 60%)
    updating: umlrt/umlrtcapsuleid.hh (deflated 52%)
    updating: umlrt/umlrtcapsulepart.hh (deflated 54%)
    updating: umlrt/umlrtcapsulerole.hh (deflated 60%)
    updating: umlrt/umlrtcapsuletocontrollermap.hh (deflated 71%)
    updating: umlrt/umlrtcommsport.hh (deflated 63%)
    updating: umlrt/umlrtcommsportfarend.hh (deflated 52%)
    updating: umlrt/umlrtcommsportrole.hh (deflated 57%)
    updating: umlrt/umlrtcontroller.hh (deflated 72%)
    updating: umlrt/umlrtcontrollercommand.hh (deflated 58%)
    updating: umlrt/umlrtframeprotocol.hh (deflated 88%)
    updating: umlrt/umlrtframeservice.hh (deflated 75%)
    updating: umlrt/umlrtguard.hh (deflated 54%)
    updating: umlrt/umlrthashmap.hh (deflated 64%)
    updating: umlrt/umlrtinoutsignal.hh (deflated 57%)
    updating: umlrt/umlrtinsignal.hh (deflated 66%)
    updating: umlrt/umlrtlogprotocol.hh (deflated 67%)
    updating: umlrt/umlrtmain.hh (deflated 62%)
    updating: umlrt/umlrtmessage.hh (deflated 59%)
    updating: umlrt/umlrtmessagepool.hh (deflated 54%)
    updating: umlrt/umlrtmessagequeue.hh (deflated 51%)
    updating: umlrt/umlrtmutex.hh (deflated 51%)
    updating: umlrt/umlrtobjectclass.hh (deflated 73%)
    updating: umlrt/umlrtobjectclassgeneric.hh (deflated 58%)
    updating: umlrt/umlrtoutsignal.hh (deflated 59%)
    updating: umlrt/umlrtpool.hh (deflated 53%)
    updating: umlrt/umlrtpriority.hh (deflated 51%)
    updating: umlrt/umlrtprioritymessagequeue.hh (deflated 61%)
    updating: umlrt/umlrtprotocol.hh (deflated 72%)
    updating: umlrt/umlrtqueue.hh (deflated 62%)
    updating: umlrt/umlrtqueueelement.hh (deflated 51%)
    updating: umlrt/umlrtrtsinterface.hh (deflated 65%)
    updating: umlrt/umlrtrtsinterfaceumlrt.hh (deflated 65%)
    updating: umlrt/umlrtsemaphore.hh (deflated 51%)
    updating: umlrt/umlrtsignal.hh (deflated 65%)
    updating: umlrt/umlrtsignalelement.hh (deflated 67%)
    updating: umlrt/umlrtsignalelementpool.hh (deflated 55%)
    updating: umlrt/umlrtslot.hh (deflated 56%)
    updating: umlrt/umlrttimer.hh (deflated 55%)
    updating: umlrt/umlrttimerid.hh (deflated 53%)
    updating: umlrt/umlrttimerpool.hh (deflated 53%)
    updating: umlrt/umlrttimerprotocol.hh (deflated 81%)
    updating: umlrt/umlrttimerqueue.hh (deflated 58%)
    updating: umlrt/umlrttimespec.hh (deflated 66%)
    updating: umlrt/umlrtuserconfig.hh (deflated 58%)
    updating: umlrt/umlrtapi.cc (deflated 74%)
    updating: umlrt/umlrtbasicthread.cc (deflated 53%)
    updating: umlrt/umlrtcapsule.cc (deflated 63%)
    updating: umlrt/umlrtcapsuleid.cc (deflated 59%)
    updating: umlrt/umlrtcapsuletocontrollermap.cc (deflated 78%)
    updating: umlrt/umlrtcommsport.cc (deflated 69%)
    updating: umlrt/umlrtcontroller.cc (deflated 78%)
    updating: umlrt/umlrtframeprotocol.cc (deflated 86%)
    updating: umlrt/umlrtframeservice.cc (deflated 80%)
    updating: umlrt/umlrthashmap.cc (deflated 75%)
    updating: umlrt/umlrtinoutsignal.cc (deflated 59%)
    updating: umlrt/umlrtinsignal.cc (deflated 79%)
    updating: umlrt/umlrtlogprotocol.cc (deflated 87%)
    updating: umlrt/umlrtmain.cc (deflated 73%)
    updating: umlrt/umlrtmainloop.cc (deflated 52%)
    updating: umlrt/umlrtmaintargetshutdown.cc (deflated 50%)
    updating: umlrt/umlrtmaintargetstartup.cc (deflated 51%)
    updating: umlrt/umlrtmessage.cc (deflated 56%)
    updating: umlrt/umlrtmessagepool.cc (deflated 62%)
    updating: umlrt/umlrtmessagequeue.cc (deflated 51%)
    updating: umlrt/umlrtobjectclass.cc (deflated 88%)
    updating: umlrt/umlrtoutsignal.cc (deflated 74%)
    updating: umlrt/umlrtpool.cc (deflated 57%)
    updating: umlrt/umlrtprioritymessagequeue.cc (deflated 72%)
    updating: umlrt/umlrtprotocol.cc (deflated 82%)
    updating: umlrt/umlrtqueue.cc (deflated 72%)
    updating: umlrt/umlrtrtsinterfaceumlrt.cc (deflated 73%)
    updating: umlrt/umlrtsignal.cc (deflated 78%)
    updating: umlrt/umlrtsignalelement.cc (deflated 74%)
    updating: umlrt/umlrtsignalelementpool.cc (deflated 63%)
    updating: umlrt/umlrttimerid.cc (deflated 50%)
    updating: umlrt/umlrttimerpool.cc (deflated 62%)
    updating: umlrt/umlrttimerprotocol.cc (deflated 82%)
    updating: umlrt/umlrttimerqueue.cc (deflated 74%)
    updating: umlrt/umlrttimespec.cc (deflated 72%)
    updating: umlrt/umlrtgetopt.hh (deflated 54%)
    updating: umlrt/umlrtgetopt.cc (deflated 73%)
    updating: umlrt/basedebug.cc (deflated 75%)
    updating: umlrt/basefatal.cc (deflated 58%)
    updating: umlrt/basedebug.hh (deflated 69%)
    updating: umlrt/basedebugtype.hh (deflated 68%)
    updating: umlrt/basefatal.hh (deflated 66%)
    updating: umlrt/library.properties (deflated 27%)
    

    Ensuite je l'inclue avec croquis > inclure une bibliotèque > inclure une bibliotèque .zip.. > ouvrire umlrt.zip

    $ cd ~/Arduino/libraries/umlrt 
    $ tree
    .
    ├── basedebug.cc
    ├── basedebug.hh
    ├── basedebugtype.hh
    ├── basefatal.cc
    ├── basefatal.hh
    ├── library.properties
    ├── umlrtapi.cc
    ├── umlrtapi.hh
    ├── umlrtbasicthread.cc
    ├── umlrtbasicthread.hh
    ├── umlrtcapsule.cc
    ├── umlrtcapsule.hh
    ├── umlrtcapsuleclass.hh
    ├── umlrtcapsuleid.cc
    ├── umlrtcapsuleid.hh
    ├── umlrtcapsulepart.hh
    ├── umlrtcapsulerole.hh
    ├── umlrtcapsuletocontrollermap.cc
    ├── umlrtcapsuletocontrollermap.hh
    ├── umlrtcommsport.cc
    ├── umlrtcommsport.hh
    ├── umlrtcommsportfarend.hh
    ├── umlrtcommsportrole.hh
    ├── umlrtcontroller.cc
    ├── umlrtcontroller.hh
    ├── umlrtcontrollercommand.hh
    ├── umlrtframeprotocol.cc
    ├── umlrtframeprotocol.hh
    ├── umlrtframeservice.cc
    ├── umlrtframeservice.hh
    ├── umlrtgetopt.cc
    ├── umlrtgetopt.hh
    ├── umlrtguard.hh
    ├── umlrthashmap.cc
    ├── umlrthashmap.hh
    ├── umlrtinoutsignal.cc
    ├── umlrtinoutsignal.hh
    ├── umlrtinsignal.cc
    ├── umlrtinsignal.hh
    ├── umlrtlogprotocol.cc
    ├── umlrtlogprotocol.hh
    ├── umlrtmain.cc
    ├── umlrtmain.hh
    ├── umlrtmainloop.cc
    ├── umlrtmaintargetshutdown.cc
    ├── umlrtmaintargetstartup.cc
    ├── umlrtmessage.cc
    ├── umlrtmessage.hh
    ├── umlrtmessagepool.cc
    ├── umlrtmessagepool.hh
    ├── umlrtmessagequeue.cc
    ├── umlrtmessagequeue.hh
    ├── umlrtmutex.hh
    ├── umlrtobjectclass.cc
    ├── umlrtobjectclass.hh
    ├── umlrtobjectclassgeneric.hh
    ├── umlrtoutsignal.cc
    ├── umlrtoutsignal.hh
    ├── umlrtpool.cc
    ├── umlrtpool.hh
    ├── umlrtpriority.hh
    ├── umlrtprioritymessagequeue.cc
    ├── umlrtprioritymessagequeue.hh
    ├── umlrtprotocol.cc
    ├── umlrtprotocol.hh
    ├── umlrtqueue.cc
    ├── umlrtqueue.hh
    ├── umlrtqueueelement.hh
    ├── umlrtrtsinterface.hh
    ├── umlrtrtsinterfaceumlrt.cc
    ├── umlrtrtsinterfaceumlrt.hh
    ├── umlrtsemaphore.hh
    ├── umlrtsignal.cc
    ├── umlrtsignal.hh
    ├── umlrtsignalelement.cc
    ├── umlrtsignalelement.hh
    ├── umlrtsignalelementpool.cc
    ├── umlrtsignalelementpool.hh
    ├── umlrtslot.hh
    ├── umlrttimer.hh
    ├── umlrttimerid.cc
    ├── umlrttimerid.hh
    ├── umlrttimerpool.cc
    ├── umlrttimerpool.hh
    ├── umlrttimerprotocol.cc
    ├── umlrttimerprotocol.hh
    ├── umlrttimerqueue.cc
    ├── umlrttimerqueue.hh
    ├── umlrttimespec.cc
    ├── umlrttimespec.hh
    └── umlrtuserconfig.hh
    
    0 directories, 91 files
    

    et l'entierté des output arduino

    /usr/share/arduino/arduino-builder -dump-prefs -logger=machine -hardware /usr/share/arduino/hardware -hardware /home/breizh/.arduino15/packages -tools /usr/share/arduino/tools-builder -tools /home/breizh/.arduino15/packages -libraries /home/breizh/Arduino/libraries -fqbn=archlinux-arduino:avr:uno -ide-version=10813 -build-path /tmp/arduino_build_217221 -warnings=none -build-cache /tmp/arduino_cache_826072 -prefs=build.warn_data_percentage=75 -verbose /home/breizh/Documents/Cours/stage/Sujet/TopMain/TopMain.ino
    /usr/share/arduino/arduino-builder -compile -logger=machine -hardware /usr/share/arduino/hardware -hardware /home/breizh/.arduino15/packages -tools /usr/share/arduino/tools-builder -tools /home/breizh/.arduino15/packages -libraries /home/breizh/Arduino/libraries -fqbn=archlinux-arduino:avr:uno -ide-version=10813 -build-path /tmp/arduino_build_217221 -warnings=none -build-cache /tmp/arduino_cache_826072 -prefs=build.warn_data_percentage=75 -verbose /home/breizh/Documents/Cours/stage/Sujet/TopMain/TopMain.ino
    Using board 'uno' from platform in folder: /usr/share/arduino/hardware/archlinux-arduino/avr
    Using core 'arduino' from platform in folder: /usr/share/arduino/hardware/archlinux-arduino/avr
    Detecting libraries used...
    /usr/bin/avr-g++ -c -g -Os -w -std=gnu++11 -fpermissive -fno-exceptions -ffunction-sections -fdata-sections -fno-threadsafe-statics -Wno-error=narrowing -flto -w -x c++ -E -CC -mmcu=atmega328p -DF_CPU=16000000L -DARDUINO=10813 -DARDUINO_AVR_UNO -DARDUINO_ARCH_AVR -I/usr/share/arduino/hardware/archlinux-arduino/avr/cores/arduino -I/usr/share/arduino/hardware/archlinux-arduino/avr/variants/standard /tmp/arduino_build_217221/sketch/TopMain.ino.cpp -o /dev/null -DARDUINO_LIB_DISCOVERY_PHASE
    Alternatives for umlrtmain.hh: [umlrt@0.1]
    ResolveLibrary(umlrtmain.hh)
      -> candidates: [umlrt@0.1]
    /usr/bin/avr-g++ -c -g -Os -w -std=gnu++11 -fpermissive -fno-exceptions -ffunction-sections -fdata-sections -fno-threadsafe-statics -Wno-error=narrowing -flto -w -x c++ -E -CC -mmcu=atmega328p -DF_CPU=16000000L -DARDUINO=10813 -DARDUINO_AVR_UNO -DARDUINO_ARCH_AVR -I/usr/share/arduino/hardware/archlinux-arduino/avr/cores/arduino -I/usr/share/arduino/hardware/archlinux-arduino/avr/variants/standard -I/home/breizh/Arduino/libraries/umlrt /tmp/arduino_build_217221/sketch/TopMain.ino.cpp -o /dev/null -DARDUINO_LIB_DISCOVERY_PHASE
    Generating function prototypes...
    /usr/bin/avr-g++ -c -g -Os -w -std=gnu++11 -fpermissive -fno-exceptions -ffunction-sections -fdata-sections -fno-threadsafe-statics -Wno-error=narrowing -flto -w -x c++ -E -CC -mmcu=atmega328p -DF_CPU=16000000L -DARDUINO=10813 -DARDUINO_AVR_UNO -DARDUINO_ARCH_AVR -I/usr/share/arduino/hardware/archlinux-arduino/avr/cores/arduino -I/usr/share/arduino/hardware/archlinux-arduino/avr/variants/standard -I/home/breizh/Arduino/libraries/umlrt /tmp/arduino_build_217221/sketch/TopMain.ino.cpp -o /tmp/arduino_build_217221/preproc/ctags_target_for_gcc_minus_e.cpp -DARDUINO_LIB_DISCOVERY_PHASE
    /usr/bin/arduino-ctags -u --language-force=c++ -f - --c++-kinds=svpf --fields=KSTtzns --line-directives /tmp/arduino_build_217221/preproc/ctags_target_for_gcc_minus_e.cpp
    Compilation du croquis...
    /usr/bin/avr-g++ -c -g -Os -w -std=gnu++11 -fpermissive -fno-exceptions -ffunction-sections -fdata-sections -fno-threadsafe-statics -Wno-error=narrowing -MMD -flto -mmcu=atmega328p -DF_CPU=16000000L -DARDUINO=10813 -DARDUINO_AVR_UNO -DARDUINO_ARCH_AVR -I/usr/share/arduino/hardware/archlinux-arduino/avr/cores/arduino -I/usr/share/arduino/hardware/archlinux-arduino/avr/variants/standard -I/home/breizh/Arduino/libraries/umlrt /tmp/arduino_build_217221/sketch/TopMain.ino.cpp -o /tmp/arduino_build_217221/sketch/TopMain.ino.cpp.o
    Compiling libraries...
    Compiling library "umlrt"
    Compiling core...
    Using precompiled core: /tmp/arduino_cache_826072/core/core_archlinux-arduino_avr_uno_33334de5e2d3c2672266eacd2ab9ae3a.a
    Linking everything together...
    /usr/bin/avr-gcc -w -Os -g -flto -fuse-linker-plugin -Wl,--gc-sections -mmcu=atmega328p -o /tmp/arduino_build_217221/TopMain.ino.elf /tmp/arduino_build_217221/sketch/TopMain.ino.cpp.o /tmp/arduino_build_217221/../arduino_cache_826072/core/core_archlinux-arduino_avr_uno_33334de5e2d3c2672266eacd2ab9ae3a.a -L/tmp/arduino_build_217221 -lm
    /usr/bin/avr-ld : /tmp/ccmsfAJU.ltrans0.ltrans.o : dans la fonction « __vector_16 » :
    /usr/share/arduino/hardware/archlinux-arduino/avr/cores/arduino/main.cpp:(.text.startup+0xe) : référence indéfinie vers « UMLRTSignalElement::UMLRTSignalElement() »
    /usr/bin/avr-ld : /usr/share/arduino/hardware/archlinux-arduino/avr/cores/arduino/main.cpp:(.text.startup+0x2c) : référence indéfinie vers « UMLRTSignalElementPool::UMLRTSignalElementPool(UMLRTSignalElement*, unsigned int, unsigned int) »
    /usr/bin/avr-ld : /usr/share/arduino/hardware/archlinux-arduino/avr/cores/arduino/main.cpp:(.text.startup+0x54) : référence indéfinie vers « UMLRTSignal::UMLRTSignal() »
    /usr/bin/avr-ld : /usr/share/arduino/hardware/archlinux-arduino/avr/cores/arduino/main.cpp:(.text.startup+0x7e) : référence indéfinie vers « UMLRTMessagePool::UMLRTMessagePool(UMLRTMessage*, unsigned int, unsigned int) »
    /usr/bin/avr-ld : /tmp/ccmsfAJU.ltrans0.ltrans.o : dans la fonction « main » :
    /usr/share/arduino/hardware/archlinux-arduino/avr/cores/arduino/wiring.c:252 : référence indéfinie vers « Top_slots »
    /usr/bin/avr-ld : /usr/share/arduino/hardware/archlinux-arduino/avr/cores/arduino/wiring.c:265 : référence indéfinie vers « Top_slots »
    /usr/bin/avr-ld : /usr/share/arduino/hardware/archlinux-arduino/avr/cores/arduino/wiring.c:265 : référence indéfinie vers « UMLRTCapsuleToControllerMap::setDefaultSlotList(UMLRTSlot*, unsigned int) »
    /usr/bin/avr-ld : /usr/share/arduino/hardware/archlinux-arduino/avr/cores/arduino/wiring.c:266 : référence indéfinie vers « UMLRTMain::targetStartup() »
    /usr/bin/avr-ld : /usr/share/arduino/hardware/archlinux-arduino/avr/cores/arduino/wiring.c:279 : référence indéfinie vers « DefaultController »
    /usr/bin/avr-ld : /usr/share/arduino/hardware/archlinux-arduino/avr/cores/arduino/wiring.c:279 : référence indéfinie vers « DefaultController »
    /usr/bin/avr-ld : /usr/share/arduino/hardware/archlinux-arduino/avr/cores/arduino/wiring.c:290 : référence indéfinie vers « UMLRTController::spawn() »
    /usr/bin/avr-ld : /usr/share/arduino/hardware/archlinux-arduino/avr/cores/arduino/wiring.c:293 : référence indéfinie vers « UMLRTMain::mainLoop() »
    /usr/bin/avr-ld : /usr/share/arduino/hardware/archlinux-arduino/avr/cores/arduino/wiring.c:295 : référence indéfinie vers « DefaultController »
    /usr/bin/avr-ld : /usr/share/arduino/hardware/archlinux-arduino/avr/cores/arduino/wiring.c:295 : référence indéfinie vers « DefaultController »
    /usr/bin/avr-ld : /usr/share/arduino/hardware/archlinux-arduino/avr/cores/arduino/wiring.c:295 : référence indéfinie vers « UMLRTController::join() »
    /usr/bin/avr-ld : /tmp/ccmsfAJU.ltrans0.ltrans.o : dans la fonction « __vector_16 » :
    /usr/share/arduino/hardware/archlinux-arduino/avr/cores/arduino/main.cpp:(.text.exit+0x4) : référence indéfinie vers « vtable for UMLRTMessagePool »
    /usr/bin/avr-ld : /usr/share/arduino/hardware/archlinux-arduino/avr/cores/arduino/main.cpp:(.text.exit+0x6) : référence indéfinie vers « vtable for UMLRTMessagePool »
    /usr/bin/avr-ld : /usr/share/arduino/hardware/archlinux-arduino/avr/cores/arduino/main.cpp:(.text.exit+0x14) : référence indéfinie vers « UMLRTPool::~UMLRTPool() »
    /usr/bin/avr-ld : /usr/share/arduino/hardware/archlinux-arduino/avr/cores/arduino/main.cpp:(.text.exit+0x22) : référence indéfinie vers « UMLRTSignal::~UMLRTSignal() »
    /usr/bin/avr-ld : /usr/share/arduino/hardware/archlinux-arduino/avr/cores/arduino/main.cpp:(.text.exit+0x2e) : référence indéfinie vers « vtable for UMLRTSignalElementPool »
    /usr/bin/avr-ld : /usr/share/arduino/hardware/archlinux-arduino/avr/cores/arduino/main.cpp:(.text.exit+0x30) : référence indéfinie vers « vtable for UMLRTSignalElementPool »
    /usr/bin/avr-ld : /usr/share/arduino/hardware/archlinux-arduino/avr/cores/arduino/main.cpp:(.text.exit+0x3e) : référence indéfinie vers « UMLRTPool::~UMLRTPool() »
    /usr/bin/avr-ld : /usr/share/arduino/hardware/archlinux-arduino/avr/cores/arduino/main.cpp:(.text.exit+0x4c) : référence indéfinie vers « UMLRTMutex::~UMLRTMutex() »
    collect2: error: ld returned 1 exit status
    Utilisation de la bibliothèque umlrt version 0.1 dans le dossier: /home/breizh/Arduino/libraries/umlrt 
    exit status 1
    Erreur de compilation pour la carte Arduino Uno


    et l'arboresence du des fichier de build

    $ tree
    .
    ├── build.options.json
    ├── core
    │   ├── CDC.cpp.d
    │   ├── CDC.cpp.o
    │   ├── HardwareSerial.cpp.d
    │   ├── HardwareSerial.cpp.o
    │   ├── HardwareSerial0.cpp.d
    │   ├── HardwareSerial0.cpp.o
    │   ├── HardwareSerial1.cpp.d
    │   ├── HardwareSerial1.cpp.o
    │   ├── HardwareSerial2.cpp.d
    │   ├── HardwareSerial2.cpp.o
    │   ├── HardwareSerial3.cpp.d
    │   ├── HardwareSerial3.cpp.o
    │   ├── IPAddress.cpp.d
    │   ├── IPAddress.cpp.o
    │   ├── PluggableUSB.cpp.d
    │   ├── PluggableUSB.cpp.o
    │   ├── Print.cpp.d
    │   ├── Print.cpp.o
    │   ├── Stream.cpp.d
    │   ├── Stream.cpp.o
    │   ├── Tone.cpp.d
    │   ├── Tone.cpp.o
    │   ├── USBCore.cpp.d
    │   ├── USBCore.cpp.o
    │   ├── WInterrupts.c.d
    │   ├── WInterrupts.c.o
    │   ├── WMath.cpp.d
    │   ├── WMath.cpp.o
    │   ├── WString.cpp.d
    │   ├── WString.cpp.o
    │   ├── abi.cpp.d
    │   ├── abi.cpp.o
    │   ├── core.a
    │   ├── hooks.c.d
    │   ├── hooks.c.o
    │   ├── main.cpp.d
    │   ├── main.cpp.o
    │   ├── new.cpp.d
    │   ├── new.cpp.o
    │   ├── wiring.c.d
    │   ├── wiring.c.o
    │   ├── wiring_analog.c.d
    │   ├── wiring_analog.c.o
    │   ├── wiring_digital.c.d
    │   ├── wiring_digital.c.o
    │   ├── wiring_pulse.S.d
    │   ├── wiring_pulse.S.o
    │   ├── wiring_pulse.c.d
    │   ├── wiring_pulse.c.o
    │   ├── wiring_shift.c.d
    │   └── wiring_shift.c.o
    ├── includes.cache
    ├── libraries
    │   └── umlrt
    ├── preproc
    │   └── ctags_target_for_gcc_minus_e.cpp
    └── sketch
        ├── Controller.hh
        ├── OnOff.hh
        ├── Top.hh
        ├── TopControllers.hh
        ├── TopMain.ino.cpp
        ├── TopMain.ino.cpp.d
        ├── TopMain.ino.cpp.o
        ├── build
        │   ├── preproc
        │   │   └── ctags_target_for_gcc_minus_e.cpp
        │   └── sketch
        │       ├── Controller.hh
        │       ├── OnOff.hh
        │       ├── Top.hh
        │       ├── TopControllers.hh
        │       ├── TopMain.ino.cpp
        │       └── interact.hh
        └── interact.hh
    



    • Partager sur Facebook
    • Partager sur Twitter
      21 mai 2021 à 9:46:29

      Force est de constater que libraries/umlrt est vide dans le build

      A mon avis tu as loupé la construction du zip

      Quand tu constitues le zip, les sources devraient être dans un sous répertoire  src, si on prend modele sur les autres.

      -
      Edité par michelbillaud 21 mai 2021 à 9:55:06

      • Partager sur Facebook
      • Partager sur Twitter
        21 mai 2021 à 10:04:49

        Alors non, toute les librairie n'ont pas leur fichiers source dans un dossier src, les librairie DHT par exemple ce n'est pas le cas. J'ai quand même tester en suivant le même processus et ça ne change rien à mon affaire.

        • Partager sur Facebook
        • Partager sur Twitter
          21 mai 2021 à 10:25:37

          Bon , il y a une autre différence, le nom des fichiers.

          J'ai repris mon exemple plus haut en changeant les cpp en cc

          $ zip -r Foo2 Foo2
            adding: Foo2/ (stored 0%)
            adding: Foo2/library.properties (deflated 19%)
            adding: Foo2/src/ (stored 0%)
            adding: Foo2/src/Foo2.h (deflated 12%)
            adding: Foo2/src/Foo2.cc (deflated 8%)
          

          et que croyez vous qu'il arriva ?

          /tmp/ccvaLXVI.ltrans0.ltrans.o: In function `setup':
          /home/billaud/Arduino/sketch_may21a/sketch_may21a.ino:7: 
                 undefined reference to `Foo2::bar(int, int)'
          collect2: error: ld returned 1 exit status
          exit status 1
          Erreur de compilation pour la carte Arduino Uno
          

          et dans le build



          $ tree /tmp/*build*
          /tmp/arduino_build_231599
          ├── build.options.json
          ├── core
          │   ├── abi.cpp.d
          │   ├── abi.cpp.o
          │   ├── CDC.cpp.d
          │   ├── CDC.cpp.o
          │   ├── core.a
          │   ├── HardwareSerial0.cpp.d
          ...
          │   └── WString.cpp.o
          ├── includes.cache
          ├── libraries
          │   └── Foo2
          ├── preproc
          │   └── ctags_target_for_gcc_minus_e.cpp
          └── sketch
              ├── sketch_may21a.ino.cpp
              ├── sketch_may21a.ino.cpp.d
              └── sketch_may21a.ino.cpp.o
          
          5 directories, 57 files
          

          qui nous rappelle quelque chose.

          Pour ceux qui ont des doutes (légitimes), les noms Foo ont bien été changés en Foo2 partout dans les sources, évidemment

          $ rgrep Foo Foo2
          Foo2/library.properties:name=Foo2
          Foo2/src/Foo2.h:class Foo2 {
          Foo2/src/Foo2.cc:#include "Foo2.h"
          Foo2/src/Foo2.cc:int Foo2::bar(int a, int b) {
          


          Donc, une autre piste, les conventions sur les noms de fichiers dans les bibliothèques Arduino. Il y a peut être une documentation à ce sujet quelque part ?

          EDIT : la réponse est : oui, mais vaguement. Dans le tutoriel https://www.arduino.cc/en/Hacking/LibraryTutorial

          on lit

          Let's start turning the sketch into a library!

          You need at least two files for a library: a header file (w/ the extension .h) and the source file (w/ extension .cpp).


          Et bien sur c'est pas à jour, ca ne parle pas du fichier de propriétés, et les liens renvoient vers des trucs qui n'existent plus. Aussi dans

          https://www.arduino.cc/en/hacking/libraries


          Il y a


          > Libraries are files written in C or C++ (.c, .cpp)


          .

          -
          Edité par michelbillaud 21 mai 2021 à 10:39:06

          • Partager sur Facebook
          • Partager sur Twitter
            21 mai 2021 à 11:13:58

            C'est ça ! Les extension de fichier T.T Je les aurais tellement jamais incriminé.. Merci beaucoup beaucoup de votre aide et votre patience !!

            Je pense honnêtement que le fichier de propriété on peut s'en passer, ça reste à tester mais je pense que c'est uniquement pour l'utilisateur pour avoir son nom, sa version etc mais que ça n'influe pas sur le bon fonctionnement. Mon cas simple avec la led ne contiens pas de fichier de propriété et ça tourne bien.

            Encore une fois, merci. Comment je peux mettre le poste en "résolue" ?

            • Partager sur Facebook
            • Partager sur Twitter
              21 mai 2021 à 12:26:34

              Ouf !

              Faut dire que la plateforme arduino et les bibliothèques, c'est fait par des gens qui sont sûrement très compétents pou lire des datasheets et en tirer du code qui marche.

              Pour ce qui est de fournir un logiciel bien fait avec une documentation complète à jour etc, c'est une autre histoire.

              Quand on en est bien conscient, on commence à se méfier des petits détails à la con.

              -
              Edité par michelbillaud 21 mai 2021 à 12:30:03

              • Partager sur Facebook
              • Partager sur Twitter

              Makefile et librairie

              × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
              × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
              • Editeur
              • Markdown