# Pulse Engine Compile Failed On Raspberry PI 4

**URL:** <https://discourse.kitware.com/t/pulse-engine-compile-failed-on-raspberry-pi-4/1309>\
**Category:** Pulse Physiology Engine\
**Created:** [June 12, 2024, 5:26pm UTC](https://discourse.kitware.com/t/pulse-engine-compile-failed-on-raspberry-pi-4/1309 "2024-06-12T17:26:20Z")\
**Posts on this page:** 8\
**Page:** 1

<div class="post-metadata">

**Author:** ![jkablan](https://discourse.kitware.com/letter_avatar_proxy/v4/letter/j/f14d63/32.png) [@jkablan](https://discourse.kitware.com/u/jkablan)\
**Post date:** [June 12, 2024, 5:26pm UTC](https://discourse.kitware.com/t/pulse-engine-compile-failed-on-raspberry-pi-4/1309/1 "2024-06-12T17:26:20Z")

</div>

Hi, I’m trying to build the PulseScenarioDriver on a Raspberry Pi 4.

It seems the build fails when linking due to multiple definitions of a bunch of symbols (see below).

My call to cmake:  
cmake -DCMAKE\_BUILD\_TYPE:STRING=Release -DPulse\_DOWNLOAD\_BASELINES:BOOL=ON …/engine  
My call to make:  
make -j4

Can someone help me understand what the issue is?

Thanks!  
-------------------------- MAKE OUTPUT --------------------------  
[82%] Built target Pulse [82%] Linking CXX executable PulseScenarioDriver [82%] Building CXX object src/cpp/study/circuit\_optimization/CMakeFiles/CircuitOptimizationEngine.dir/CircuitOptimizer.cpp.o /usr/bin/ld: …/Pulse.a(Engine.cpp.o):(.rodata+0x28): multiple definition of `typeinfo name for SECircuitNode<SEScalarPressure, SEScalarVolume, PressureUnit, VolumeUnit>'; ../Pulse.a(GeneralMath.cpp.o):(.rodata+0x0): first >/usr/bin/ld: ../Pulse.a(Engine.cpp.o):(.data.rel.ro+0xc): multiple definition of `typeinfo for SECircuitNode\<SEScalarPressure, SEScalarVolume, PressureUnit, VolumeUnit\>‘; …/Pulse.a(GeneralMath.cpp.o):(.data.rel.ro+0x0): fi\>/usr/bin/ld: …/Pulse.a(Engine.cpp.o):(.rodata+0x78): multiple definition of `typeinfo name for SECircuitNode<SEScalarElectricPotential, SEScalarElectricCharge, ElectricPotentialUnit, ElectricChargeUnit>'; ../Pulse.a(Genera>/usr/bin/ld: ../Pulse.a(Engine.cpp.o):(.data.rel.ro+0x18): multiple definition of `typeinfo for SECircuitNode\<SEScalarElectricPotential, SEScalarElectricCharge, ElectricPotentialUnit, ElectricChargeUnit\>’; …/Pulse.a(Genera\>  
… (many lines of "multiple definition of … " omitted)  
make[3]: \*\*\* [Makefile:136: all] Error 2 make[2]: \*\*\* [cmake/external/CMakeFiles/Pulse.dir/build.make:86: cmake/external/Pulse-prefix/src/Pulse-stamp/Pulse-build] Error 2  
make[1]: \*\*\* [CMakeFiles/Makefile2:215: cmake/external/CMakeFiles/Pulse.dir/all] Error 2 make: \*\*\* [Makefile:91: all] Error 2  
… (additional output omitted)  
------------------------ CMAKE OUTPUT ------------------------

– Using preset install directory /home/juser/pulse/builds/install  
– We are using protobuf 25.2  
– Added ABSL dependency  
– Using python: /usr/bin/python3  
– SuperBuild - First pass  
– We are using protobuf 25.2  
– Added ABSL dependency  
– SuperBuild - First pass - done  
– SuperBuild - Pulse =\> Requires Eigen3, protobuf, absl, pybind11, absl,  
– SuperBuild - Eigen3[OK]  
– Eigen3\_DIR : /home/juser/pulse/builds/External/Eigen3/install/share/eigen3/cmake  
– We are using protobuf 25.2  
– Added ABSL dependency  
– SuperBuild - protobuf =\> Requires absl,  
– SuperBuild - absl[OK]  
– absl\_DIR : /home/juser/pulse/builds/install/lib/cmake/absl  
– SuperBuild - protobuf[OK]  
– protobuf\_DIR : /home/juser/pulse/builds/install/lib/cmake/protobuf  
– utf8\_range\_DIR : /home/juser/pulse/builds/install/lib/cmake/utf8\_range  
– SuperBuild - pybind11[OK]  
– pybind11\_DIR : /home/juser/pulse/builds/External/pybind11/install/share/cmake/pybind11  
– SuperBuild - Pulse[OK]  
– Pulling the latest Pulse Baselines!  
– Configuring done  
– Generating done  
– Build files have been written to: /home/juser/pulse/builds

---

<div class="post-metadata">

**Author:** ![abray](https://discourse.kitware.com/user_avatar/discourse.kitware.com/abray/32/12_2.png) [@abray](https://discourse.kitware.com/u/abray)\
**Post date:** [June 17, 2024, 1:33pm UTC](https://discourse.kitware.com/t/pulse-engine-compile-failed-on-raspberry-pi-4/1309/2 "2024-06-17T13:33:09Z")

</div>

Hmm  
I have not done that in a while, but I don’t see why it would not work.

What Pulse branch/hash are you building?  
What compiler and version are you using?

I assume this is something to do with how our templates are being processed by the compiler…

---

<div class="post-metadata">

**Author:** ![jkablan](https://discourse.kitware.com/letter_avatar_proxy/v4/letter/j/f14d63/32.png) [@jkablan](https://discourse.kitware.com/u/jkablan)\
**Post date:** [June 21, 2024, 3:37pm UTC](https://discourse.kitware.com/t/pulse-engine-compile-failed-on-raspberry-pi-4/1309/3 "2024-06-21T15:37:18Z")

</div>

Thanks for your reply.

Pulse commit I’m building:  
commit b5ef23de07cfba6878a54663e5a0bf0b48b172dc (HEAD → stable, origin/stable, origin/HEAD)

Compiler Info:  
gcc (Raspbian 12.2.0-14+rpi1) 12.2.0

Cmake Info:  
cmake version 3.25.1

Please let m me know if there’s any additional info you’d like or anything I should try.

---

<div class="post-metadata">

**Author:** ![abray](https://discourse.kitware.com/user_avatar/discourse.kitware.com/abray/32/12_2.png) [@abray](https://discourse.kitware.com/u/abray)\
**Post date:** [June 21, 2024, 4:06pm UTC](https://discourse.kitware.com/t/pulse-engine-compile-failed-on-raspberry-pi-4/1309/4 "2024-06-21T16:06:14Z")

</div>

Can you try attaching the full build log?

---

<div class="post-metadata">

**Author:** ![jkablan](https://discourse.kitware.com/letter_avatar_proxy/v4/letter/j/f14d63/32.png) [@jkablan](https://discourse.kitware.com/u/jkablan)\
**Post date:** [June 21, 2024, 8:14pm UTC](https://discourse.kitware.com/t/pulse-engine-compile-failed-on-raspberry-pi-4/1309/5 "2024-06-21T20:14:04Z")

</div>

The forum doesn’t allow .txt files, and the log is too large for pastebin so I uploaded it here. Thanks!

> **[buildlog.txt - Fastupload.io](https://fastupload.io/c0181a96a8828a1d)**
>
> Download file - buildlog.txt

---

<div class="post-metadata">

**Author:** ![abray](https://discourse.kitware.com/user_avatar/discourse.kitware.com/abray/32/12_2.png) [@abray](https://discourse.kitware.com/u/abray)\
**Post date:** [June 24, 2024, 3:21pm UTC](https://discourse.kitware.com/t/pulse-engine-compile-failed-on-raspberry-pi-4/1309/6 "2024-06-24T15:21:29Z")

</div>

I guess we have some C++ code in Pulse that the newer versions of arm64 GCC are now not happy about… I will have to see how I can easily reproduce this to get a fix in

---

<div class="post-metadata">

**Author:** ![jkablan](https://discourse.kitware.com/letter_avatar_proxy/v4/letter/j/f14d63/32.png) [@jkablan](https://discourse.kitware.com/u/jkablan)\
**Post date:** [August 1, 2024, 5:00pm UTC](https://discourse.kitware.com/t/pulse-engine-compile-failed-on-raspberry-pi-4/1309/7 "2024-08-01T17:00:49Z")

</div>

Thanks for looking into this, it’s much appreciated. Do you happen to have a guess as to the last version of arm gcc that was able to successfully build your code?

---

<div class="post-metadata">

**Author:** ![abray](https://discourse.kitware.com/user_avatar/discourse.kitware.com/abray/32/12_2.png) [@abray](https://discourse.kitware.com/u/abray)\
**Post date:** [August 2, 2024, 2:21am UTC](https://discourse.kitware.com/t/pulse-engine-compile-failed-on-raspberry-pi-4/1309/8 "2024-08-02T02:21:30Z")

</div>

I have been building fine for android arm platforms pretty well.  
But its been quite a while since I built Pulse on a small compute machine like raspberry pi.

I found [this issue that seems pretty similar](https://github.com/xmrig/xmrig/issues/3396) to what you are getting.

Are you sure you are building on a 64-bit OS?

For whatever reason, the platform you are building on does not like double precision stl vectors
