Closed jtg374 closed 5 years ago
@mstimberg fixed the problem with the missing timestep function in a recent update. We need to make a new release soon. In the meantime, if you install brian2genn from the latest master branch, the error should go away.
@tnowotny Thanks Thomas, I git cloned the latest master branch and ran "python setup.py install"; I also git cloned the latest genn and set GENN_PATH to where I put the genn directory. In this way I encoutered no errors in most examples.
However if I direct GENN_PATH to /home/jintao/anaconda2/pkgs/brian2genn-1.1.5-py27hd8aa01e_0/opt/genn, I will experience this kind of error
$ python simple_spikesource.py INFO The following preferences have been changed for Brian2GeNN, reset them manually if you use a different device later in the same script: codegen.loop_invariant_optimisations, core.network.default_schedule [brian2.devices.genn] running brian code generation ... building genn executable ... g++ -std=c++11 -Wall -Wextra -DNVCC=\""/opt/cuda/bin/nvcc"\" -DMODEL=\"/home/jintao/b2genn/examples/simple_spikesource/magicnetwork_model.cpp\" -o /home/jintao/b2genn/examples/simple_spikesource/generateALL /home/jintao/anaconda2/pkgs/brian2genn-1.1.5-py27hd8aa01e_0/opt/genn/lib/src/generate.cc -I"/home/jintao/anaconda2/pkgs/brian2genn-1.1.5-py27hd8aa01e_0/opt/genn/lib/include" -I"/opt/cuda/include" -L"/home/jintao/anaconda2/pkgs/brian2genn-1.1.5-py27hd8aa01e_0/opt/genn/lib/lib" -L"/opt/cuda/lib64" -lgenn -lcuda -lcudart genn-buildmodel.sh:71: error 50: command failure /usr/bin/ld: /home/jintao/anaconda2/pkgs/brian2genn-1.1.5-py27hd8aa01e_0/opt/genn/lib/lib/libgenn.a(global.o): relocation R_X86_64_32 against
.rodata' can not be used when making a PIE object; recompile with -fPIC /usr/bin/ld: /home/jintao/anaconda2/pkgs/brian2genn-1.1.5-py27hd8aa01e_0/opt/genn/lib/lib/libgenn.a(modelSpec.o): relocation R_X86_64_32 against
.rodata' can not be used when making a PIE object; recompile with -fPIC /usr/bin/ld: /home/jintao/anaconda2/pkgs/brian2genn-1.1.5-py27hd8aa01e_0/opt/genn/lib/lib/libgenn.a(neuronGroup.o): relocation R_X86_64_32 against.rodata' can not be used when making a PIE object; recompile with -fPIC /usr/bin/ld: /home/jintao/anaconda2/pkgs/brian2genn-1.1.5-py27hd8aa01e_0/opt/genn/lib/lib/libgenn.a(synapseGroup.o): relocation R_X86_64_32 against
.rodata' can not be used when making a PIE object; recompile with -fPIC /usr/bin/ld: /home/jintao/anaconda2/pkgs/brian2genn-1.1.5-py27hd8aa01e_0/opt/genn/lib/lib/libgenn.a(neuronModels.o): relocation R_X86_64_32 against.rodata' can not be used when making a PIE object; recompile with -fPIC /usr/bin/ld: /home/jintao/anaconda2/pkgs/brian2genn-1.1.5-py27hd8aa01e_0/opt/genn/lib/lib/libgenn.a(synapseModels.o): relocation R_X86_64_32 against
.rodata' can not be used when making a PIE object; recompile with -fPIC /usr/bin/ld: /home/jintao/anaconda2/pkgs/brian2genn-1.1.5-py27hd8aa01e_0/opt/genn/lib/lib/libgenn.a(postSynapseModels.o): relocation R_X86_64_32 against.rodata' can not be used when making a PIE object; recompile with -fPIC /usr/bin/ld: /home/jintao/anaconda2/pkgs/brian2genn-1.1.5-py27hd8aa01e_0/opt/genn/lib/lib/libgenn.a(utils.o): relocation R_X86_64_32 against
.rodata' can not be used when making a PIE object; recompile with -fPIC /usr/bin/ld: /home/jintao/anaconda2/pkgs/brian2genn-1.1.5-py27hd8aa01e_0/opt/genn/lib/lib/libgenn.a(codeGenUtils.o): relocation R_X86_64_32 against.rodata' can not be used when making a PIE object; recompile with -fPIC /usr/bin/ld: /home/jintao/anaconda2/pkgs/brian2genn-1.1.5-py27hd8aa01e_0/opt/genn/lib/lib/libgenn.a(newNeuronModels.o): relocation R_X86_64_32 against symbol
nModels' can not be used when making a PIE object; recompile with -fPIC /usr/bin/ld: /home/jintao/anaconda2/pkgs/brian2genn-1.1.5-py27hd8aa01e_0/opt/genn/lib/lib/libgenn.a(newPostsynapticModels.o): relocation R_X86_64_32 against symbolpostSynModels' can not be used when making a PIE object; recompile with -fPIC /usr/bin/ld: /home/jintao/anaconda2/pkgs/brian2genn-1.1.5-py27hd8aa01e_0/opt/genn/lib/lib/libgenn.a(newWeightUpdateModels.o): relocation R_X86_64_32 against symbol
weightUpdateModels' can not be used when making a PIE object; recompile with -fPIC /tmp/ccnCE7oI.o: In functionmodelDefinition(NNmodel&)': generateALL.cc:(.text+0x43): undefined reference to
GENN_PREFERENCES::userCxxFlagsWIN[abi:cxx11]' generateALL.cc:(.text+0x56): undefined reference toGENN_PREFERENCES::userCxxFlagsGNU[abi:cxx11]' generateALL.cc:(.text+0x69): undefined reference to
GENN_PREFERENCES::userNvccFlags[abi:cxx11]' generateALL.cc:(.text+0x65d): undefined reference toNNmodel::setName(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)' generateALL.cc:(.text+0x6ef): undefined reference to
NNmodel::addNeuronPopulation(std::__cxx11::basic_string<char, std::char_traits, std::allocator , double const)' generateALL.cc:(.text+0x768): undefined reference to `NNmodel::addNeuronPopulation(std::__cxx11::basic_string<char, std::char_traits> const&, unsigned int, unsigned int, double const , std::allocator , double const)' generateALL.cc:(.text+0x886): undefined reference to `NNmodel::addSynapsePopulation(std::cxx11::basic_string<char, std::char_traits> const&, unsigned int, unsigned int, double const , std::allocator cxx11::basic_string<char, std::char_traits> const&, unsigned int, SynapseConnType, SynapseGType, unsigned int, unsigned int, std:: , std::allocator , double const, double const, double const)' /tmp/ccnCE7oI.o: In function> const&, std::__cxx11::basic_string<char, std::char_traits , std::allocator > const&, double const chooseDevice(NNmodel&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)': generateALL.cc:(.text+0x113d): undefined reference to
NNmodel::isSynapseGroupPostLearningRequired(std::cxx11::basic_string<char, std::char_traits, std::allocator cxx11::basic_string<char, std::char_traits> const&) const' generateALL.cc:(.text+0x1177): undefined reference to `NNmodel::isSynapseGroupDynamicsRequired(std:: , std::allocator , NeuronGroup const&, NameIterCtx<std::vector<std::pair<std::cxx11::basic_string<char, std::char_traits> const&) const' generateALL.cc:(.text+0x19ea): undefined reference to GENN_PREFERENCES::userNvccFlags[abi:cxx11]' /tmp/ccnCE7oI.o: In function
main': generateALL.cc:(.text+0x39c3): undefined reference togennError(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)' /tmp/cc5tryJ3.o: In function
(anonymous namespace)::generate_process_presynaptic_events_code_CPU(std::ostream&, std::cxx11::basic_string<char, std::char_traits, std::allocator cxx11::basic_string<char, std::char_traits> const&, SynapseGroup const&, std:: , std::allocator > const&, std::cxx11::basic_string<char, std::char_traits , std::allocator cxx11::basic_string<char, std::char_traits> const&)': generateCPU.cc:(.text+0x351): undefined reference to SynapseGroup::getOffsetPre[abi:cxx11]() const' generateCPU.cc:(.text+0x934): undefined reference to
substitute(std::, std::allocator >&, std::cxx11::basic_string<char, std::char_traits , std::allocator cxx11::basic_string<char, std::char_traits> const&, std:: , std::allocator > const&)' generateCPU.cc:(.text+0x9d6): undefined reference to substitute(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)' generateCPU.cc:(.text+0xabe): undefined reference to
StandardSubstitutions::weightUpdateThresholdCondition(std::cxx11::basic_string<char, std::char_traits, std::allocator cxx11::basic_string<char, std::char_traits>&, SynapseGroup const&, NameIterCtx<std::vector<std::pair<std:: , std::allocator >, std::function<double (std::vector<double, std::allocator > const&, double)> >, std::allocator<std::pair<std::cxx11::basic_string<char, std::char_traits , std::allocator cxx11::basic_string<char, std::char_traits>, std::function<double (std::vector<double, std::allocator > const&, double)> > > > > const&, NameIterCtx<std::vector<std::pair<std:: , std::allocator >, std::cxx11::basic_string<char, std::char_traits , std::allocator cxx11::basic_string<char, std::char_traits> >, std::allocator<std::pair<std:: , std::allocator >, std::cxx11::basic_string<char, std::char_traits , std::allocator cxx11::basic_string<char, std::char_traits> > > > > const&, std:: , std::allocator > const&, std::cxx11::basic_string<char, std::char_traits , std::allocator cxx11::basic_string<char, std::char_traits> const&, std:: , std::allocator > const&, std::cxx11::basic_string<char, std::char_traits , std::allocator cxx11::basic_string<char, std::char_traits> const&)' generateCPU.cc:(.text+0xd6f): undefined reference to `substitute(std:: , std::allocator >&, std::cxx11::basic_string<char, std::char_traits , std::allocator cxx11::basic_string<char, std::char_traits> const&, std:: , std::allocator > const&)' generateCPU.cc:(.text+0xe11): undefined reference to substitute(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)' generateCPU.cc:(.text+0x11cb): undefined reference to
substitute(std::cxx11::basic_string<char, std::char_traits, std::allocator cxx11::basic_string<char, std::char_traits>&, std:: , std::allocator > const&, std::cxx11::basic_string<char, std::char_traits , std::allocator cxx11::basic_string<char, std::char_traits> const&)' generateCPU.cc:(.text+0x12bc): undefined reference to `StandardSubstitutions::weightUpdateSim(std:: , std::allocator >&, SynapseGroup const&, NameIterCtx<std::vector<std::pair<std::cxx11::basic_string<char, std::char_traits , std::allocator cxx11::basic_string<char, std::char_traits>, std:: , std::allocator > >, std::allocator<std::pair<std::cxx11::basic_string<char, std::char_traits , std::allocator cxx11::basic_string<char, std::char_traits>, std:: , std::allocator > > > > > const&, NameIterCtx<std::vector<std::pair<std::cxx11::basic_string<char, std::char_traits , std::allocator cxx11::basic_string<char, std::char_traits>, std::function<double (std::vector<double, std::allocator > const&, double)> >, std::allocator<std::pair<std:: , std::allocator >, std::function<double (std::vector<double, std::allocator > const&, double)> > > > > const&, NameIterCtx<std::vector<std::pair<std::cxx11::basic_string<char, std::char_traits , std::allocator cxx11::basic_string<char, std::char_traits>, std:: , std::allocator > >, std::allocator<std::pair<std::cxx11::basic_string<char, std::char_traits , std::allocator cxx11::basic_string<char, std::char_traits>, std:: , std::allocator > > > > > const&, std::cxx11::basic_string<char, std::char_traits , std::allocator cxx11::basic_string<char, std::char_traits> const&, std:: , std::allocator > const&, std::cxx11::basic_string<char, std::char_traits , std::allocator cxx11::basic_string<char, std::char_traits> const&, std:: , std::allocator > const&)' /tmp/cc5tryJ3.o: In function genNeuronFunction(NNmodel const&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)': generateCPU.cc:(.text+0x221a): undefined reference to
StandardGeneratedSections::neuronOutputInit(std::ostream&, NeuronGroup const&, std::cxx11::basic_string<char, std::char_traits, std::allocator cxx11::basic_string<char, std::char_traits> const&)' generateCPU.cc:(.text+0x25b0): undefined reference to `StandardGeneratedSections::neuronLocalVarInit(std::ostream&, NeuronGroup const&, NameIterCtx<std::vector<std::pair<std:: , std::allocator >, std::cxx11::basic_string<char, std::char_traits , std::allocator cxx11::basic_string<char, std::char_traits> >, std::allocator<std::pair<std:: , std::allocator >, std::cxx11::basic_string<char, std::char_traits , std::allocator cxx11::basic_string<char, std::char_traits> > > > > const&, std:: , std::allocator > const&, std::cxx11::basic_string<char, std::char_traits , std::allocator cxx11::basic_string<char, std::char_traits> const&)' generateCPU.cc:(.text+0x2c84): undefined reference to `substitute(std:: , std::allocator >&, std::cxx11::basic_string<char, std::char_traits , std::allocator cxx11::basic_string<char, std::char_traits> const&, std:: , std::allocator > const&)' generateCPU.cc:(.text+0x2d54): undefined reference to substitute(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)' generateCPU.cc:(.text+0x2dea): undefined reference to
StandardSubstitutions::postSynapseCurrentConverter(std::__cxx11::basic_string<char, std::char_traits, std::allocator >&, SynapseGroup const , std::allocator cxx11::basic_string<char, std::char_traits>, std:: , std::allocator > >, std::allocator<std::pair<std::cxx11::basic_string<char, std::char_traits , std::allocator cxx11::basic_string<char, std::char_traits>, std:: , std::allocator > > > > > const&, NameIterCtx<std::vector<std::pair<std::cxx11::basic_string<char, std::char_traits , std::allocator cxx11::basic_string<char, std::char_traits>, std::function<double (std::vector<double, std::allocator > const&, double)> >, std::allocator<std::pair<std:: , std::allocator >, std::function<double (std::vector<double, std::allocator > const&, double)> > > > > const&, NameIterCtx<std::vector<std::pair<std::cxx11::basic_string<char, std::char_traits , std::allocator cxx11::basic_string<char, std::char_traits>, std:: , std::allocator > >, std::allocator<std::pair<std::cxx11::basic_string<char, std::char_traits , std::allocator cxx11::basic_string<char, std::char_traits>, std:: , std::allocator > > > > > const&, std::cxx11::basic_string<char, std::char_traits , std::allocator cxx11::basic_string<char, std::char_traits> const&)' generateCPU.cc:(.text+0x32c9): undefined reference to `substitute(std:: , std::allocator >&, std::cxx11::basic_string<char, std::char_traits , std::allocator cxx11::basic_string<char, std::char_traits> const&, std:: , std::allocator > const&)' generateCPU.cc:(.text+0x334c): undefined reference to StandardSubstitutions::neuronThresholdCondition(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&, NeuronGroup const&, NameIterCtx<std::vector<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::allocator<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > > > > const&, NameIterCtx<std::vector<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::function<double (std::vector<double, std::allocator<double> > const&, double)> >, std::allocator<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::function<double (std::vector<double, std::allocator<double> > const&, double)> > > > > const&, NameIterCtx<std::vector<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::allocator<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > > > > const&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)' generateCPU.cc:(.text+0x34b9): undefined reference to
substitute(std::cxx11::basic_string<char, std::char_traits, std::allocator cxx11::basic_string<char, std::char_traits>&, std:: , std::allocator > const&, std::cxx11::basic_string<char, std::char_traits , std::allocator cxx11::basic_string<char, std::char_traits> const&)' generateCPU.cc:(.text+0x353c): undefined reference to `StandardSubstitutions::neuronSim(std:: , std::allocator >&, NeuronGroup const&, NameIterCtx<std::vector<std::pair<std::cxx11::basic_string<char, std::char_traits , std::allocator cxx11::basic_string<char, std::char_traits>, std:: , std::allocator > >, std::allocator<std::pair<std::cxx11::basic_string<char, std::char_traits , std::allocator cxx11::basic_string<char, std::char_traits>, std:: , std::allocator > > > > > const&, NameIterCtx<std::vector<std::pair<std::cxx11::basic_string<char, std::char_traits , std::allocator cxx11::basic_string<char, std::char_traits>, std::function<double (std::vector<double, std::allocator > const&, double)> >, std::allocator<std::pair<std:: , std::allocator >, std::function<double (std::vector<double, std::allocator > const&, double)> > > > > const&, NameIterCtx<std::vector<std::pair<std::cxx11::basic_string<char, std::char_traits , std::allocator cxx11::basic_string<char, std::char_traits>, std:: , std::allocator > >, std::allocator<std::pair<std::cxx11::basic_string<char, std::char_traits , std::allocator cxx11::basic_string<char, std::char_traits>, std:: , std::allocator > > > > > const&, std::cxx11::basic_string<char, std::char_traits , std::allocator cxx11::basic_string<char, std::char_traits> const&)' generateCPU.cc:(.text+0x362d): undefined reference to `substitute(std:: , std::allocator >&, std::cxx11::basic_string<char, std::char_traits , std::allocator cxx11::basic_string<char, std::char_traits> const&, std:: , std::allocator > const&)' generateCPU.cc:(.text+0x372a): undefined reference to NeuronGroup::getQueueOffset(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&) const' generateCPU.cc:(.text+0x37d6): undefined reference to
StandardGeneratedSections::neuronSpikeEventTest(std::ostream&, NeuronGroup const&, NameIterCtx<std::vector<std::pair<std::cxx11::basic_string<char, std::char_traits, std::allocator cxx11::basic_string<char, std::char_traits>, std:: , std::allocator > >, std::allocator<std::pair<std::cxx11::basic_string<char, std::char_traits , std::allocator cxx11::basic_string<char, std::char_traits>, std:: , std::allocator > > > > > const&, NameIterCtx<std::vector<std::pair<std::cxx11::basic_string<char, std::char_traits , std::allocator cxx11::basic_string<char, std::char_traits>, std:: , std::allocator > >, std::allocator<std::pair<std::cxx11::basic_string<char, std::char_traits , std::allocator cxx11::basic_string<char, std::char_traits>, std:: , std::allocator > > > > > const&, std::cxx11::basic_string<char, std::char_traits , std::allocator cxx11::basic_string<char, std::char_traits> const&, std:: , std::allocator > const&)' generateCPU.cc:(.text+0x3f2a): undefined reference to substitute(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)' generateCPU.cc:(.text+0x3fad): undefined reference to
StandardSubstitutions::neuronReset(std::cxx11::basic_string<char, std::char_traits, std::allocator cxx11::basic_string<char, std::char_traits>&, NeuronGroup const&, NameIterCtx<std::vector<std::pair<std:: , std::allocator >, std::cxx11::basic_string<char, std::char_traits , std::allocator cxx11::basic_string<char, std::char_traits> >, std::allocator<std::pair<std:: , std::allocator >, std::cxx11::basic_string<char, std::char_traits , std::allocator cxx11::basic_string<char, std::char_traits> > > > > const&, NameIterCtx<std::vector<std::pair<std:: , std::allocator >, std::function<double (std::vector<double, std::allocator > const&, double)> >, std::allocator<std::pair<std::cxx11::basic_string<char, std::char_traits , std::allocator cxx11::basic_string<char, std::char_traits>, std::function<double (std::vector<double, std::allocator > const&, double)> > > > > const&, NameIterCtx<std::vector<std::pair<std:: , std::allocator >, std::cxx11::basic_string<char, std::char_traits , std::allocator cxx11::basic_string<char, std::char_traits> >, std::allocator<std::pair<std:: , std::allocator >, std::cxx11::basic_string<char, std::char_traits , std::allocator cxx11::basic_string<char, std::char_traits> > > > > const&, std:: , std::allocator > const&)' generateCPU.cc:(.text+0x413b): undefined reference to StandardGeneratedSections::neuronLocalVarWrite(std::ostream&, NeuronGroup const&, NameIterCtx<std::vector<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::allocator<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > > > > const&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)' generateCPU.cc:(.text+0x42ac): undefined reference to
substitute(std::cxx11::basic_string<char, std::char_traits, std::allocator cxx11::basic_string<char, std::char_traits>&, std:: , std::allocator > const&, std::cxx11::basic_string<char, std::char_traits , std::allocator cxx11::basic_string<char, std::char_traits> const&)' generateCPU.cc:(.text+0x437c): undefined reference to `substitute(std:: , std::allocator >&, std::cxx11::basic_string<char, std::char_traits , std::allocator cxx11::basic_string<char, std::char_traits> const&, std:: , std::allocator > const&)' generateCPU.cc:(.text+0x4412): undefined reference to StandardSubstitutions::postSynapseDecay(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&, SynapseGroup const*, NeuronGroup const&, NameIterCtx<std::vector<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::allocator<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > > > > const&, NameIterCtx<std::vector<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::function<double (std::vector<double, std::allocator<double> > const&, double)> >, std::allocator<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::function<double (std::vector<double, std::allocator<double> > const&, double)> > > > > const&, NameIterCtx<std::vector<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::allocator<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > > > > const&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)' /tmp/cc5tryJ3.o: In function
genSynapseFunction(NNmodel const&, std::cxx11::basic_string<char, std::char_traits, std::allocator cxx11::basic_string<char, std::char_traits> const&)': generateCPU.cc:(.text+0x5c33): undefined reference to `NNmodel::findSynapseGroup(std:: , std::allocator > const&) const' generateCPU.cc:(.text+0x6078): undefined reference to substitute(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)' generateCPU.cc:(.text+0x639b): undefined reference to
StandardSubstitutions::weightUpdateDynamics(std::cxx11::basic_string<char, std::char_traits, std::allocator cxx11::basic_string<char, std::char_traits>&, SynapseGroup const*, NameIterCtx<std::vector<std::pair<std:: , std::allocator >, std::cxx11::basic_string<char, std::char_traits , std::allocator cxx11::basic_string<char, std::char_traits> >, std::allocator<std::pair<std:: , std::allocator >, std::cxx11::basic_string<char, std::char_traits , std::allocator cxx11::basic_string<char, std::char_traits> > > > > const&, NameIterCtx<std::vector<std::pair<std:: , std::allocator >, std::function<double (std::vector<double, std::allocator > const&, double)> >, std::allocator<std::pair<std::cxx11::basic_string<char, std::char_traits , std::allocator cxx11::basic_string<char, std::char_traits>, std::function<double (std::vector<double, std::allocator > const&, double)> > > > > const&, std:: , std::allocator > const&, std::cxx11::basic_string<char, std::char_traits , std::allocator cxx11::basic_string<char, std::char_traits> const&, std:: , std::allocator > const&, std::cxx11::basic_string<char, std::char_traits , std::allocator cxx11::basic_string<char, std::char_traits> const&)' generateCPU.cc:(.text+0x6855): undefined reference to `StandardSubstitutions::weightUpdateDynamics(std:: , std::allocator >&, SynapseGroup const, NameIterCtx<std::vector<std::pair<std::cxx11::basic_string<char, std::char_traits , std::allocator cxx11::basic_string<char, std::char_traits>, std:: , std::allocator , NameIterCtx<std::vector<std::pair<std::cxx11::basic_string<char, std::char_traits> >, std::allocator<std::pair<std::cxx11::basic_string<char, std::char_traits , std::allocator cxx11::basic_string<char, std::char_traits>, std:: , std::allocator > > > > > const&, NameIterCtx<std::vector<std::pair<std::cxx11::basic_string<char, std::char_traits , std::allocator cxx11::basic_string<char, std::char_traits>, std::function<double (std::vector<double, std::allocator > const&, double)> >, std::allocator<std::pair<std:: , std::allocator >, std::function<double (std::vector<double, std::allocator > const&, double)> > > > > const&, std::cxx11::basic_string<char, std::char_traits , std::allocator cxx11::basic_string<char, std::char_traits> const&, std:: , std::allocator > const&, std::cxx11::basic_string<char, std::char_traits , std::allocator cxx11::basic_string<char, std::char_traits> const&, std:: , std::allocator > const&)' generateCPU.cc:(.text+0x7564): undefined reference to NNmodel::findSynapseGroup(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&) const' generateCPU.cc:(.text+0x7b40): undefined reference to
SynapseGroup::getOffsetPost(std::cxx11::basic_string<char, std::char_traits, std::allocator cxx11::basic_string<char, std::char_traits> const&) const' generateCPU.cc:(.text+0x7ef1): undefined reference to `substitute(std:: , std::allocator >&, std::cxx11::basic_string<char, std::char_traits , std::allocator cxx11::basic_string<char, std::char_traits> const&, std:: , std::allocator > const&)' generateCPU.cc:(.text+0x835d): undefined reference to `StandardSubstitutions::weightUpdatePostLearn(std::__cxx11::basic_string<char, std::char_traits , std::allocator >&, SynapseGroup const , std::allocator cxx11::basic_string<char, std::char_traits>, std::function<double (std::vector<double, std::allocator > const&, double)> >, std::allocator<std::pair<std:: , std::allocator >, std::function<double (std::vector<double, std::allocator > const&, double)> > > > > const&, NameIterCtx<std::vector<std::pair<std::cxx11::basic_string<char, std::char_traits , std::allocator cxx11::basic_string<char, std::char_traits>, std:: , std::allocator > >, std::allocator<std::pair<std::cxx11::basic_string<char, std::char_traits , std::allocator cxx11::basic_string<char, std::char_traits>, std:: , std::allocator > > > > > const&, std::cxx11::basic_string<char, std::char_traits , std::allocator cxx11::basic_string<char, std::char_traits> const&, std:: , std::allocator > const&, std::cxx11::basic_string<char, std::char_traits , std::allocator cxx11::basic_string<char, std::char_traits> const&, std:: , std::allocator > const&)' /tmp/cc5tryJ3.o: In function void name_substitutions<PairKeyConstIter<__gnu_cxx::__normal_iterator<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > const*, std::vector<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::allocator<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > > > > > >(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, PairKeyConstIter<__gnu_cxx::__normal_iterator<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > const*, std::vector<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::allocator<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > > > > >, PairKeyConstIter<__gnu_cxx::__normal_iterator<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > const*, std::vector<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::allocator<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > > > > >, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)': generateCPU.cc:(.text._Z18name_substitutionsI16PairKeyConstIterIN9__gnu_cxx17__normal_iteratorIPKSt4pairINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEES9_ESt6vectorISA_SaISA_EEEEEEvRS9_RKS9_T_SL_SK_SK_[_Z18name_substitutionsI16PairKeyConstIterIN9__gnu_cxx17__normal_iteratorIPKSt4pairINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEES9_ESt6vectorISA_SaISA_EEEEEEvRS9_RKS9_T_SL_SK_SK_]+0x131): undefined reference to
substitute(std::cxx11::basic_string<char, std::char_traits, std::allocator cxx11::basic_string<char, std::char_traits>&, std:: , std::allocator > const&, std::cxx11::basic_string<char, std::char_traits , std::allocator cxx11::basic_string<char, std::char_traits> const&)' /tmp/cc4MmIus.o: In function `(anonymous namespace)::generatePreParallelisedSparseCode(std::ostream&, SynapseGroup const&, std:: , std::allocator > const&, std::cxx11::basic_string<char, std::char_traits , std::allocator cxx11::basic_string<char, std::char_traits> const&, std:: , std::allocator > const&)': generateKernels.cc:(.text+0xac1): undefined reference to StandardSubstitutions::weightUpdateThresholdCondition(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&, SynapseGroup const&, NameIterCtx<std::vector<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::function<double (std::vector<double, std::allocator<double> > const&, double)> >, std::allocator<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::function<double (std::vector<double, std::allocator<double> > const&, double)> > > > > const&, NameIterCtx<std::vector<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::allocator<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > > > > const&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)' generateKernels.cc:(.text+0xe2a): undefined reference to
substitute(std::cxx11::basic_string<char, std::char_traits, std::allocator cxx11::basic_string<char, std::char_traits>&, std:: , std::allocator > const&, std::cxx11::basic_string<char, std::char_traits , std::allocator cxx11::basic_string<char, std::char_traits> const&)' generateKernels.cc:(.text+0xef2): undefined reference to `substitute(std:: , std::allocator >&, std::cxx11::basic_string<char, std::char_traits , std::allocator cxx11::basic_string<char, std::char_traits> const&, std:: , std::allocator > const&)' generateKernels.cc:(.text+0xfa7): undefined reference to substitute(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)' generateKernels.cc:(.text+0x104b): undefined reference to
substitute(std::cxx11::basic_string<char, std::char_traits, std::allocator cxx11::basic_string<char, std::char_traits>&, std:: , std::allocator > const&, std::cxx11::basic_string<char, std::char_traits , std::allocator cxx11::basic_string<char, std::char_traits> const&)' generateKernels.cc:(.text+0x10ed): undefined reference to `substitute(std:: , std::allocator >&, std::cxx11::basic_string<char, std::char_traits , std::allocator cxx11::basic_string<char, std::char_traits> const&, std:: , std::allocator > const&)' generateKernels.cc:(.text+0x12ef): undefined reference to StandardSubstitutions::weightUpdateSim(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&, SynapseGroup const&, NameIterCtx<std::vector<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::allocator<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > > > > const&, NameIterCtx<std::vector<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::function<double (std::vector<double, std::allocator<double> > const&, double)> >, std::allocator<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::function<double (std::vector<double, std::allocator<double> > const&, double)> > > > > const&, NameIterCtx<std::vector<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::allocator<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > > > > const&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)' /tmp/cc4MmIus.o: In function
(anonymous namespace)::generatePostParallelisedCode(std::ostream&, SynapseGroup const&, std::cxx11::basic_string<char, std::char_traits, std::allocator cxx11::basic_string<char, std::char_traits> const&, std:: , std::allocator > const&, std::cxx11::basic_string<char, std::char_traits , std::allocator cxx11::basic_string<char, std::char_traits> const&)': generateKernels.cc:(.text+0x1e51): undefined reference to SynapseGroup::getOffsetPre[abi:cxx11]() const' generateKernels.cc:(.text+0x258a): undefined reference to
StandardSubstitutions::weightUpdateThresholdCondition(std::, std::allocator >&, SynapseGroup const&, NameIterCtx<std::vector<std::pair<std::cxx11::basic_string<char, std::char_traits , std::allocator cxx11::basic_string<char, std::char_traits>, std::function<double (std::vector<double, std::allocator > const&, double)> >, std::allocator<std::pair<std:: , std::allocator >, std::function<double (std::vector<double, std::allocator > const&, double)> > > > > const&, NameIterCtx<std::vector<std::pair<std::cxx11::basic_string<char, std::char_traits , std::allocator cxx11::basic_string<char, std::char_traits>, std:: , std::allocator > >, std::allocator<std::pair<std::cxx11::basic_string<char, std::char_traits , std::allocator cxx11::basic_string<char, std::char_traits>, std:: , std::allocator > > > > > const&, std::cxx11::basic_string<char, std::char_traits , std::allocator cxx11::basic_string<char, std::char_traits> const&, std:: , std::allocator > const&, std::cxx11::basic_string<char, std::char_traits , std::allocator cxx11::basic_string<char, std::char_traits> const&, std:: , std::allocator > const&)' generateKernels.cc:(.text+0x2b40): undefined reference to substitute(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)' generateKernels.cc:(.text+0x2c2b): undefined reference to
substitute(std::cxx11::basic_string<char, std::char_traits, std::allocator cxx11::basic_string<char, std::char_traits>&, std:: , std::allocator > const&, std::cxx11::basic_string<char, std::char_traits , std::allocator cxx11::basic_string<char, std::char_traits> const&)' generateKernels.cc:(.text+0x2ce0): undefined reference to `substitute(std:: , std::allocator >&, std::cxx11::basic_string<char, std::char_traits , std::allocator cxx11::basic_string<char, std::char_traits> const&, std:: , std::allocator > const&)' generateKernels.cc:(.text+0x2d84): undefined reference to substitute(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)' generateKernels.cc:(.text+0x2e26): undefined reference to
substitute(std::cxx11::basic_string<char, std::char_traits, std::allocator cxx11::basic_string<char, std::char_traits>&, std:: , std::allocator > const&, std::cxx11::basic_string<char, std::char_traits , std::allocator cxx11::basic_string<char, std::char_traits> const&)' /tmp/cc4MmIus.o:generateKernels.cc:(.text+0x2fdb): more undefined references to `substitute(std:: , std::allocator >&, std::cxx11::basic_string<char, std::char_traits , std::allocator cxx11::basic_string<char, std::char_traits> const&, std:: , std::allocator > const&)' follow /tmp/cc4MmIus.o: In function (anonymous namespace)::generatePostParallelisedCode(std::ostream&, SynapseGroup const&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)': generateKernels.cc:(.text+0x3385): undefined reference to
StandardSubstitutions::weightUpdateSim(std::cxx11::basic_string<char, std::char_traits, std::allocator cxx11::basic_string<char, std::char_traits>&, SynapseGroup const&, NameIterCtx<std::vector<std::pair<std:: , std::allocator >, std::cxx11::basic_string<char, std::char_traits , std::allocator cxx11::basic_string<char, std::char_traits> >, std::allocator<std::pair<std:: , std::allocator >, std::cxx11::basic_string<char, std::char_traits , std::allocator cxx11::basic_string<char, std::char_traits> > > > > const&, NameIterCtx<std::vector<std::pair<std:: , std::allocator >, std::function<double (std::vector<double, std::allocator > const&, double)> >, std::allocator<std::pair<std::cxx11::basic_string<char, std::char_traits , std::allocator cxx11::basic_string<char, std::char_traits>, std::function<double (std::vector<double, std::allocator > const&, double)> > > > > const&, NameIterCtx<std::vector<std::pair<std:: , std::allocator >, std::cxx11::basic_string<char, std::char_traits , std::allocator cxx11::basic_string<char, std::char_traits> >, std::allocator<std::pair<std:: , std::allocator >, std::cxx11::basic_string<char, std::char_traits , std::allocator cxx11::basic_string<char, std::char_traits> > > > > const&, std:: , std::allocator > const&, std::cxx11::basic_string<char, std::char_traits , std::allocator cxx11::basic_string<char, std::char_traits> const&, std:: , std::allocator > const&, std::cxx11::basic_string<char, std::char_traits , std::allocator cxx11::basic_string<char, std::char_traits> const&)' /tmp/cc4MmIus.o: In function `genNeuronKernel(NNmodel const&, std:: , std::allocator > const&)': generateKernels.cc:(.text+0x50c6): undefined reference to StandardGeneratedSections::neuronOutputInit(std::ostream&, NeuronGroup const&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)' generateKernels.cc:(.text+0x5c97): undefined reference to
StandardGeneratedSections::neuronLocalVarInit(std::ostream&, NeuronGroup const&, NameIterCtx<std::vector<std::pair<std::cxx11::basic_string<char, std::char_traits, std::allocator cxx11::basic_string<char, std::char_traits>, std:: , std::allocator > >, std::allocator<std::pair<std::cxx11::basic_string<char, std::char_traits , std::allocator cxx11::basic_string<char, std::char_traits>, std:: , std::allocator > > > > > const&, std::cxx11::basic_string<char, std::char_traits , std::allocator cxx11::basic_string<char, std::char_traits> const&, std:: , std::allocator > const&)' generateKernels.cc:(.text+0x6490): undefined reference to substitute(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)' generateKernels.cc:(.text+0x6522): undefined reference to
substitute(std::cxx11::basic_string<char, std::char_traits, std::allocator cxx11::basic_string<char, std::char_traits>&, std:: , std::allocator > const&, std::cxx11::basic_string<char, std::char_traits , std::allocator cxx11::basic_string<char, std::char_traits> const&)' generateKernels.cc:(.text+0x65a9): undefined reference to `StandardSubstitutions::postSynapseCurrentConverter(std:: , std::allocator >&, SynapseGroup const*, NeuronGroup const&, NameIterCtx<std::vector<std::pair<std::cxx11::basic_string<char, std::char_traits , std::allocator cxx11::basic_string<char, std::char_traits>, std:: , std::allocator > >, std::allocator<std::pair<std::cxx11::basic_string<char, std::char_traits , std::allocator cxx11::basic_string<char, std::char_traits>, std:: , std::allocator > > > > > const&, NameIterCtx<std::vector<std::pair<std::cxx11::basic_string<char, std::char_traits , std::allocator cxx11::basic_string<char, std::char_traits>, std::function<double (std::vector<double, std::allocator > const&, double)> >, std::allocator<std::pair<std:: , std::allocator >, std::function<double (std::vector<double, std::allocator > const&, double)> > > > > const&, NameIterCtx<std::vector<std::pair<std::cxx11::basic_string<char, std::char_traits , std::allocator cxx11::basic_string<char, std::char_traits>, std:: , std::allocator > >, std::allocator<std::pair<std::cxx11::basic_string<char, std::char_traits , std::allocator cxx11::basic_string<char, std::char_traits>, std:: , std::allocator > > > > > const&, std::cxx11::basic_string<char, std::char_traits , std::allocator cxx11::basic_string<char, std::char_traits> const&)' generateKernels.cc:(.text+0x6a58): undefined reference to `substitute(std:: , std::allocator >&, std::cxx11::basic_string<char, std::char_traits , std::allocator cxx11::basic_string<char, std::char_traits> const&, std:: , std::allocator > const&)' generateKernels.cc:(.text+0x6abd): undefined reference to StandardSubstitutions::neuronThresholdCondition(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&, NeuronGroup const&, NameIterCtx<std::vector<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::allocator<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > > > > const&, NameIterCtx<std::vector<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::function<double (std::vector<double, std::allocator<double> > const&, double)> >, std::allocator<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::function<double (std::vector<double, std::allocator<double> > const&, double)> > > > > const&, NameIterCtx<std::vector<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::allocator<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > > > > const&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)' generateKernels.cc:(.text+0x6bfe): undefined reference to
substitute(std::cxx11::basic_string<char, std::char_traits, std::allocator cxx11::basic_string<char, std::char_traits>&, std:: , std::allocator > const&, std::cxx11::basic_string<char, std::char_traits , std::allocator cxx11::basic_string<char, std::char_traits> const&)' generateKernels.cc:(.text+0x6c63): undefined reference to `StandardSubstitutions::neuronSim(std:: , std::allocator >&, NeuronGroup const&, NameIterCtx<std::vector<std::pair<std::cxx11::basic_string<char, std::char_traits , std::allocator cxx11::basic_string<char, std::char_traits>, std:: , std::allocator > >, std::allocator<std::pair<std::cxx11::basic_string<char, std::char_traits , std::allocator cxx11::basic_string<char, std::char_traits>, std:: , std::allocator > > > > > const&, NameIterCtx<std::vector<std::pair<std::cxx11::basic_string<char, std::char_traits , std::allocator cxx11::basic_string<char, std::char_traits>, std::function<double (std::vector<double, std::allocator > const&, double)> >, std::allocator<std::pair<std:: , std::allocator >, std::function<double (std::vector<double, std::allocator > const&, double)> > > > > const&, NameIterCtx<std::vector<std::pair<std::cxx11::basic_string<char, std::char_traits , std::allocator cxx11::basic_string<char, std::char_traits>, std:: , std::allocator > >, std::allocator<std::pair<std::cxx11::basic_string<char, std::char_traits , std::allocator cxx11::basic_string<char, std::char_traits>, std:: , std::allocator > > > > > const&, std::cxx11::basic_string<char, std::char_traits , std::allocator cxx11::basic_string<char, std::char_traits> const&)' generateKernels.cc:(.text+0x6d18): undefined reference to `StandardGeneratedSections::neuronSpikeEventTest(std::ostream&, NeuronGroup const&, NameIterCtx<std::vector<std::pair<std:: , std::allocator >, std::cxx11::basic_string<char, std::char_traits , std::allocator cxx11::basic_string<char, std::char_traits> >, std::allocator<std::pair<std:: , std::allocator >, std::cxx11::basic_string<char, std::char_traits , std::allocator cxx11::basic_string<char, std::char_traits> > > > > const&, NameIterCtx<std::vector<std::pair<std:: , std::allocator >, std::cxx11::basic_string<char, std::char_traits , std::allocator cxx11::basic_string<char, std::char_traits> >, std::allocator<std::pair<std:: , std::allocator >, std::cxx11::basic_string<char, std::char_traits , std::allocator cxx11::basic_string<char, std::char_traits> > > > > const&, std:: , std::allocator > const&, std::cxx11::basic_string<char, std::char_traits , std::allocator cxx11::basic_string<char, std::char_traits> const&)' generateKernels.cc:(.text+0x71b5): undefined reference to `substitute(std:: , std::allocator >&, std::cxx11::basic_string<char, std::char_traits , std::allocator cxx11::basic_string<char, std::char_traits> const&, std:: , std::allocator > const&)' generateKernels.cc:(.text+0x721a): undefined reference to StandardSubstitutions::neuronReset(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&, NeuronGroup const&, NameIterCtx<std::vector<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::allocator<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > > > > const&, NameIterCtx<std::vector<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::function<double (std::vector<double, std::allocator<double> > const&, double)> >, std::allocator<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::function<double (std::vector<double, std::allocator<double> > const&, double)> > > > > const&, NameIterCtx<std::vector<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::allocator<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > > > > const&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)' generateKernels.cc:(.text+0x736d): undefined reference to
StandardGeneratedSections::neuronLocalVarWrite(std::ostream&, NeuronGroup const&, NameIterCtx<std::vector<std::pair<std::cxx11::basic_string<char, std::char_traits, std::allocator cxx11::basic_string<char, std::char_traits>, std:: , std::allocator > >, std::allocator<std::pair<std::cxx11::basic_string<char, std::char_traits , std::allocator cxx11::basic_string<char, std::char_traits>, std:: , std::allocator > > > > > const&, std::cxx11::basic_string<char, std::char_traits , std::allocator cxx11::basic_string<char, std::char_traits> const&, std:: , std::allocator > const&)' generateKernels.cc:(.text+0x7506): undefined reference to substitute(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)' generateKernels.cc:(.text+0x7598): undefined reference to
substitute(std::cxx11::basic_string<char, std::char_traits, std::allocator cxx11::basic_string<char, std::char_traits>&, std:: , std::allocator > const&, std::cxx11::basic_string<char, std::char_traits , std::allocator cxx11::basic_string<char, std::char_traits> const&)' generateKernels.cc:(.text+0x761f): undefined reference to `StandardSubstitutions::postSynapseDecay(std:: , std::allocator >&, SynapseGroup const, NeuronGroup const&, NameIterCtx<std::vector<std::pair<std::cxx11::basic_string<char, std::char_traits , std::allocator cxx11::basic_string<char, std::char_traits>, std:: , std::allocator , NameIterCtx<std::vector<std::pair<std::cxx11::basic_string<char, std::char_traits> >, std::allocator<std::pair<std::cxx11::basic_string<char, std::char_traits , std::allocator cxx11::basic_string<char, std::char_traits>, std:: , std::allocator > > > > > const&, NameIterCtx<std::vector<std::pair<std::cxx11::basic_string<char, std::char_traits , std::allocator cxx11::basic_string<char, std::char_traits>, std::function<double (std::vector<double, std::allocator > const&, double)> >, std::allocator<std::pair<std:: , std::allocator >, std::function<double (std::vector<double, std::allocator > const&, double)> > > > > const&, NameIterCtx<std::vector<std::pair<std::cxx11::basic_string<char, std::char_traits , std::allocator cxx11::basic_string<char, std::char_traits>, std:: , std::allocator > >, std::allocator<std::pair<std::cxx11::basic_string<char, std::char_traits , std::allocator cxx11::basic_string<char, std::char_traits>, std:: , std::allocator > > > > > const&, std::cxx11::basic_string<char, std::char_traits , std::allocator cxx11::basic_string<char, std::char_traits> const&)' generateKernels.cc:(.text+0x802c): undefined reference to `NeuronGroup::getQueueOffset(std:: , std::allocator > const&) const' /tmp/cc4MmIus.o: In function genSynapseKernel(NNmodel const&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)': generateKernels.cc:(.text+0x9ce6): undefined reference to
NNmodel::findSynapseGroup(std::cxx11::basic_string<char, std::char_traits, std::allocator cxx11::basic_string<char, std::char_traits> const&) const' generateKernels.cc:(.text+0xa1fd): undefined reference to `substitute(std:: , std::allocator >&, std::cxx11::basic_string<char, std::char_traits , std::allocator cxx11::basic_string<char, std::char_traits> const&, std:: , std::allocator > const&)' generateKernels.cc:(.text+0xa72d): undefined reference to `StandardSubstitutions::weightUpdateDynamics(std::__cxx11::basic_string<char, std::char_traits , std::allocator >&, SynapseGroup const , std::allocator cxx11::basic_string<char, std::char_traits>, std:: , std::allocator > >, std::allocator<std::pair<std::cxx11::basic_string<char, std::char_traits , std::allocator cxx11::basic_string<char, std::char_traits>, std:: , std::allocator > > > > > const&, NameIterCtx<std::vector<std::pair<std::cxx11::basic_string<char, std::char_traits , std::allocator cxx11::basic_string<char, std::char_traits>, std::function<double (std::vector<double, std::allocator > const&, double)> >, std::allocator<std::pair<std:: , std::allocator >, std::function<double (std::vector<double, std::allocator > const&, double)> > > > > const&, std::cxx11::basic_string<char, std::char_traits , std::allocator cxx11::basic_string<char, std::char_traits> const&, std:: , std::allocator > const&, std::cxx11::basic_string<char, std::char_traits , std::allocator cxx11::basic_string<char, std::char_traits> const&, std:: , std::allocator > const&)' generateKernels.cc:(.text+0xacc4): undefined reference to StandardSubstitutions::weightUpdateDynamics(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&, SynapseGroup const*, NameIterCtx<std::vector<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::allocator<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > > > > const&, NameIterCtx<std::vector<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::function<double (std::vector<double, std::allocator<double> > const&, double)> >, std::allocator<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::function<double (std::vector<double, std::allocator<double> > const&, double)> > > > > const&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)' generateKernels.cc:(.text+0xb58a): undefined reference to
NNmodel::isSynapseGroupPostLearningRequired(std::cxx11::basic_string<char, std::char_traits, std::allocator cxx11::basic_string<char, std::char_traits> const&) const' generateKernels.cc:(.text+0xbfd7): undefined reference to `NNmodel::isSynapseGroupPostLearningRequired(std:: , std::allocator > const&) const' generateKernels.cc:(.text+0xd0bb): undefined reference to NNmodel::findSynapseGroup(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&) const' generateKernels.cc:(.text+0xd842): undefined reference to
SynapseGroup::getOffsetPost(std::cxx11::basic_string<char, std::char_traits, std::allocator cxx11::basic_string<char, std::char_traits> const&) const' generateKernels.cc:(.text+0xe06e): undefined reference to `substitute(std:: , std::allocator >&, std::cxx11::basic_string<char, std::char_traits , std::allocator cxx11::basic_string<char, std::char_traits> const&, std:: , std::allocator > const&)' generateKernels.cc:(.text+0xe519): undefined reference to StandardSubstitutions::weightUpdatePostLearn(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&, SynapseGroup const*, NameIterCtx<std::vector<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::function<double (std::vector<double, std::allocator<double> > const&, double)> >, std::allocator<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::function<double (std::vector<double, std::allocator<double> > const&, double)> > > > > const&, NameIterCtx<std::vector<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::allocator<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > > > > const&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)' /tmp/cctzmCUV.o: In function
(anonymous namespace)::allocate_variable(std::basic_ofstream<char, std::char_traits>&, std::cxx11::basic_string<char, std::char_traits , std::allocator cxx11::basic_string<char, std::char_traits> const&, std:: , std::allocator > const&, bool, unsigned long)': generateRunner.cc:(.text+0x86c): undefined reference to theSize(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)' /tmp/cctzmCUV.o: In function
genRunner(NNmodel const&, std::cxx11::basic_string<char, std::char_traits, std::allocator cxx11::basic_string<char, std::char_traits> const&)': generateRunner.cc:(.text+0x7a6a): undefined reference to `ensureFtype(std:: , std::allocator > const&, std::cxx11::basic_string<char, std::char_traits , std::allocator cxx11::basic_string<char, std::char_traits> const&)' generateRunner.cc:(.text+0x7d97): undefined reference to `ensureFtype(std:: , std::allocator > const&, std::cxx11::basic_string<char, std::char_traits , std::allocator cxx11::basic_string<char, std::char_traits> const&)' generateRunner.cc:(.text+0x8012): undefined reference to `ensureFtype(std:: , std::allocator > const&, std::cxx11::basic_string<char, std::char_traits , std::allocator cxx11::basic_string<char, std::char_traits> const&)' generateRunner.cc:(.text+0x828d): undefined reference to `ensureFtype(std:: , std::allocator > const&, std::cxx11::basic_string<char, std::char_traits , std::allocator cxx11::basic_string<char, std::char_traits> const&)' generateRunner.cc:(.text+0x8508): undefined reference to `ensureFtype(std:: , std::allocator > const&, std::cxx11::basic_string<char, std::char_traits , std::allocator cxx11::basic_string<char, std::char_traits> const&)' generateRunner.cc:(.text+0xa105): undefined reference to `NNmodel::isSynapseGroupDynamicsRequired(std:: , std::allocator > const&) const' generateRunner.cc:(.text+0xa20e): undefined reference to NNmodel::isSynapseGroupPostLearningRequired(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&) const' generateRunner.cc:(.text+0xb60a): undefined reference to
gennError(std::cxx11::basic_string<char, std::char_traits, std::allocator cxx11::basic_string<char, std::char_traits> const&)' generateRunner.cc:(.text+0xc067): undefined reference to `NeuronGroup::isVarQueueRequired(std:: , std::allocator > const&) const' generateRunner.cc:(.text+0xc0ce): undefined reference to NeuronGroup::isVarZeroCopyEnabled(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&) const' generateRunner.cc:(.text+0xc53e): undefined reference to
SynapseGroup::isWUVarZeroCopyEnabled(std::cxx11::basic_string<char, std::char_traits, std::allocator
Dear all, When running a test script (from here) I encountered this error:
I am running an Arch Linux (linux 4.14.56-1-lts) have installed nvidia-lts, opencl-nvidia and cuda packages have installed brian2 and brian2genn via conda from brian2-team(https://anaconda.org/brian-team) have set $CUDA_PATH , $GENN_PATH and $PATH.
not sure what to troubleshoot :(
Sincerely thanks, Jintao