The undefined reference is generally a linker error. I feel like the error is because of my compilation of mlpack rather than code but I do not know how to track it down or if my assumption is correct. Or if it is a bug and there is a work around.
I have written the code using this as reference - mlpack documentation
-Forgive my includes, I copied them from another file directly-
The error comes up only due to the Train statement, everything else worked fine. I used armadillo in other places and was working fine with complex data and matrix operations like eigen values generation, transpose of vectors, vector operations etc. So, I know that the error probably isn't in armadillo.
#include <iostream>
#include <cmath>
#include <cstdlib>
#include <functional>
#include <vector>
#include <complex>
#include <vector>
#include <map>
#include <fstream>
#include <string>
#include <filesystem>
#include <sstream>
#include <utility>
#include <algorithm>
#include <random>
#include <execution>
#include <mlpack/prereqs.hpp>
#include <mlpack/core.hpp>
#include <mlpack/core/data/split_data.hpp>
#include <mlpack/methods/ann/layer/layer.hpp>
#include <mlpack/methods/ann/ffn.hpp>
namespace fs = std::filesystem;
constexpr auto PI = 3.14159265f;
using namespace std;
using namespace std::complex_literals;
using namespace mlpack;
using namespace mlpack::ann;
int main() {
arma::mat trainData;
trainData = {
{1.0,11.0,21.0,31.0},
{2.0,12.0,22.0,32.0},
{3.0,13.0,23.0,33.0},
{4.0,14.0,24.0,34.0},
{6.0,16.0,26.0,36.0},
{7.0,17.0,27.0,37.0},
{8.0,18.0,28.0,38.0},
{9.0,19.0,29.0,39.0}
};
arma::mat trainLabel;
trainLabel = {1.0,2.0,3.0,4.0} ;
trainData.print();
trainLabel.print();
FFN<> model;
model.Add<Linear<> >(trainData.n_rows, 12);
model.Add<SigmoidLayer<> >();
model.Add<Linear<> >(12, 3);
model.Add<LogSoftMax<> >();
model.Train(trainData, trainLabel);
}
I run the code using the below command
g++ -O3 minimumReproducableCodeForMLError.cpp -Iarmadillo/include -Imlpack/include/ -Iboost/include -Larmadillo/lib -Lblas/lib/ -Lboost/lib -Llapack/ -Lmlpack/lib -Lopenblas/lib -Iopenblas/include -fopenmp -larmadillo -lmlpack -std=c++2a -w -o minCode.o
I tried splitting the g++ command into -c and compile the object file after that with linker. It failed at the linker part. The compile part just gives me depreceated-declarations warning from boost library.
and this is the error I get -
/usr/bin/ld: /tmp/ccNWv7em.o: in function `arma::arma_rng::randn<double>::fill(double*, unsigned long long)':
minimumReproducableCodeForMLError.cpp:(.text._ZN4arma8arma_rng5randnIdE4fillEPdy[_ZN4arma8arma_rng5randnIdE4fillEPdy]+0x56): undefined reference to `arma::mt19937_64_instance'
/usr/bin/ld: minimumReproducableCodeForMLError.cpp:(.text._ZN4arma8arma_rng5randnIdE4fillEPdy[_ZN4arma8arma_rng5randnIdE4fillEPdy]+0x71): undefined reference to `TLS init function for arma::mt19937_64_instance'
/usr/bin/ld: minimumReproducableCodeForMLError.cpp:(.text._ZN4arma8arma_rng5randnIdE4fillEPdy[_ZN4arma8arma_rng5randnIdE4fillEPdy]+0x1e0): undefined reference to `TLS init function for arma::mt19937_64_instance'
/usr/bin/ld: minimumReproducableCodeForMLError.cpp:(.text._ZN4arma8arma_rng5randnIdE4fillEPdy[_ZN4arma8arma_rng5randnIdE4fillEPdy]+0x1e7): undefined reference to `arma::mt19937_64_instance'
/usr/bin/ld: /tmp/ccNWv7em.o: in function `void mlpack::math::ShuffleData<arma::Mat<double>, arma::Mat<double> >(arma::Mat<double> const&, arma::Mat<double> const&, arma::Mat<double>&, arma::Mat<double>&, std::enable_if<!arma::is_SpMat<arma::Mat<double> >::value, void>::type const*, std::enable_if<!arma::is_Cube<arma::Mat<double> >::value, void>::type const*)':
minimumReproducableCodeForMLError.cpp:(.text._ZN6mlpack4math11ShuffleDataIN4arma3MatIdEES4_EEvRKT_RKT0_RS5_RS8_PKNSt9enable_ifIXntsrNS2_8is_SpMatIS5_EE5valueEvE4typeEPKNSD_IXntsrNS2_7is_CubeIS5_EE5valueEvE4typeE[_ZN6mlpack4math11ShuffleDataIN4arma3MatIdEES4_EEvRKT_RKT0_RS5_RS8_PKNSt9enable_ifIXntsrNS2_8is_SpMatIS5_EE5valueEvE4typeEPKNSD_IXntsrNS2_7is_CubeIS5_EE5valueEvE4typeE]+0x31b): undefined reference to `TLS init function for arma::mt19937_64_instance'
/usr/bin/ld: minimumReproducableCodeForMLError.cpp:(.text._ZN6mlpack4math11ShuffleDataIN4arma3MatIdEES4_EEvRKT_RKT0_RS5_RS8_PKNSt9enable_ifIXntsrNS2_8is_SpMatIS5_EE5valueEvE4typeEPKNSD_IXntsrNS2_7is_CubeIS5_EE5valueEvE4typeE[_ZN6mlpack4math11ShuffleDataIN4arma3MatIdEES4_EEvRKT_RKT0_RS5_RS8_PKNSt9enable_ifIXntsrNS2_8is_SpMatIS5_EE5valueEvE4typeEPKNSD_IXntsrNS2_7is_CubeIS5_EE5valueEvE4typeE]+0x322): undefined reference to `arma::mt19937_64_instance'
/usr/bin/ld: /tmp/ccNWv7em.o: in function `_ZN6mlpack3ann21NetworkInitializationINS0_20RandomInitializationEJEE10InitializeIdEEvRKSt6vectorIN5boost7variantIPNS0_18AdaptiveMaxPoolingIN4arma3MatIdEESB_EEJPNS0_19AdaptiveMeanPoolingISB_SB_EEPNS0_3AddISB_SB_EEPNS0_8AddMergeISB_SB_JEEEPNS0_12AlphaDropoutISB_SB_EEPNS0_17AtrousConvolutionINS0_16NaiveConvolutionINS0_16ValidConvolutionEEENSR_INS0_15FullConvolutionEEEST_SB_SB_EEPNS0_9BaseLayerINS0_16LogisticFunctionESB_SB_EEPNSY_INS0_16IdentityFunctionESB_SB_EEPNSY_INS0_12TanhFunctionESB_SB_EEPNSY_INS0_16SoftplusFunctionESB_SB_EEPNSY_INS0_17RectifierFunctionESB_SB_EEPNS0_9BatchNormISB_SB_EEPNS0_21BilinearInterpolationISB_SB_EEPNS0_4CELUISB_SB_EEPNS0_6ConcatISB_SB_JEEEPNS0_11ConcatenateISB_SB_EEPNS0_17ConcatPerformanceINS0_21NegativeLogLikelihoodISB_SB_EESB_SB_EEPNS0_8ConstantISB_SB_EEPNS0_11ConvolutionIST_SV_ST_SB_SB_EEPNS0_5CReLUISB_SB_EEPNS0_11DropConnectISB_SB_EEPNS0_7DropoutISB_SB_EEPNS0_3ELUISB_SB_EEPNS0_8FastLSTMISB_SB_EEPNS0_12FlexibleReLUISB_SB_EEPNS0_3GRUISB_SB_EEPNS0_8HardTanHISB_SB_EEPNS0_4JoinISB_SB_EEPNS0_9LayerNormISB_SB_EEPNS0_9LeakyReLUISB_SB_EEPNS0_6LinearISB_SB_NS0_13NoRegularizerEEEPNS0_12LinearNoBiasISB_SB_S32_EEPNS0_10LogSoftMaxISB_SB_EEPNS0_6LookupISB_SB_EEPNS0_4LSTMISB_SB_EEPNS0_10MaxPoolingISB_SB_EEPNS0_11MeanPoolingISB_SB_EEPNS0_23MiniBatchDiscriminationISB_SB_EEPNS0_16MultiplyConstantISB_SB_EEPNS0_13MultiplyMergeISB_SB_JEEEPS1V_PNS0_11NoisyLinearISB_SB_EEPNS0_7PaddingISB_SB_EEPNS0_5PReLUISB_SB_EEPNS0_7SoftmaxISB_SB_EEPNS0_14SpatialDropoutISB_SB_EEPNS0_21TransposedConvolutionIST_ST_ST_SB_SB_EEPNS0_10WeightNormISB_SB_JEEENS7_IPNS0_8Linear3DISB_SB_S32_EEJPNS0_7GlimpseISB_SB_EEPNS0_7HighwayISB_SB_JEEEPNS0_18MultiheadAttentionISB_SB_S32_EEPNS0_9RecurrentISB_SB_JEEEPNS0_18RecurrentAttentionISB_SB_EEPNS0_15ReinforceNormalISB_SB_EEPNS0_17ReparametrizationISB_SB_EEPNS0_6SelectISB_SB_EEPNS0_10SequentialISB_SB_Lb0EJEEEPNS59_ISB_SB_Lb1EJEEEPNS0_7SubviewISB_SB_EEPNS0_13VRClassRewardISB_SB_EEPNS0_16VirtualBatchNormISB_SB_EEPNS0_3RBFISB_SB_NS0_16GaussianFunctionEEEPNSY_IS5O_SB_SB_EEPNS0_18PositionalEncodingISB_SB_EEEEEEEESaIS5X_EERNSA_IT_EEm':
minimumReproducableCodeForMLError.cpp:(.text._ZN6mlpack3ann21NetworkInitializationINS0_20RandomInitializationEJEE10InitializeIdEEvRKSt6vectorIN5boost7variantIPNS0_18AdaptiveMaxPoolingIN4arma3MatIdEESB_EEJPNS0_19AdaptiveMeanPoolingISB_SB_EEPNS0_3AddISB_SB_EEPNS0_8AddMergeISB_SB_JEEEPNS0_12AlphaDropoutISB_SB_EEPNS0_17AtrousConvolutionINS0_16NaiveConvolutionINS0_16ValidConvolutionEEENSR_INS0_15FullConvolutionEEEST_SB_SB_EEPNS0_9BaseLayerINS0_16LogisticFunctionESB_SB_EEPNSY_INS0_16IdentityFunctionESB_SB_EEPNSY_INS0_12TanhFunctionESB_SB_EEPNSY_INS0_16SoftplusFunctionESB_SB_EEPNSY_INS0_17RectifierFunctionESB_SB_EEPNS0_9BatchNormISB_SB_EEPNS0_21BilinearInterpolationISB_SB_EEPNS0_4CELUISB_SB_EEPNS0_6ConcatISB_SB_JEEEPNS0_11ConcatenateISB_SB_EEPNS0_17ConcatPerformanceINS0_21NegativeLogLikelihoodISB_SB_EESB_SB_EEPNS0_8ConstantISB_SB_EEPNS0_11ConvolutionIST_SV_ST_SB_SB_EEPNS0_5CReLUISB_SB_EEPNS0_11DropConnectISB_SB_EEPNS0_7DropoutISB_SB_EEPNS0_3ELUISB_SB_EEPNS0_8FastLSTMISB_SB_EEPNS0_12FlexibleReLUISB_SB_EEPNS0_3GRUISB_SB_EEPNS0_8HardTanHISB_SB_EEPNS0_4JoinISB_SB_EEPNS0_9LayerNormISB_SB_EEPNS0_9LeakyReLUISB_SB_EEPNS0_6LinearISB_SB_NS0_13NoRegularizerEEEPNS0_12LinearNoBiasISB_SB_S32_EEPNS0_10LogSoftMaxISB_SB_EEPNS0_6LookupISB_SB_EEPNS0_4LSTMISB_SB_EEPNS0_10MaxPoolingISB_SB_EEPNS0_11MeanPoolingISB_SB_EEPNS0_23MiniBatchDiscriminationISB_SB_EEPNS0_16MultiplyConstantISB_SB_EEPNS0_13MultiplyMergeISB_SB_JEEEPS1V_PNS0_11NoisyLinearISB_SB_EEPNS0_7PaddingISB_SB_EEPNS0_5PReLUISB_SB_EEPNS0_7SoftmaxISB_SB_EEPNS0_14SpatialDropoutISB_SB_EEPNS0_21TransposedConvolutionIST_ST_ST_SB_SB_EEPNS0_10WeightNormISB_SB_JEEENS7_IPNS0_8Linear3DISB_SB_S32_EEJPNS0_7GlimpseISB_SB_EEPNS0_7HighwayISB_SB_JEEEPNS0_18MultiheadAttentionISB_SB_S32_EEPNS0_9RecurrentISB_SB_JEEEPNS0_18RecurrentAttentionISB_SB_EEPNS0_15ReinforceNormalISB_SB_EEPNS0_17ReparametrizationISB_SB_EEPNS0_6SelectISB_SB_EEPNS0_10SequentialISB_SB_Lb0EJEEEPNS59_ISB_SB_Lb1EJEEEPNS0_7SubviewISB_SB_EEPNS0_13VRClassRewardISB_SB_EEPNS0_16VirtualBatchNormISB_SB_EEPNS0_3RBFISB_SB_NS0_16GaussianFunctionEEEPNSY_IS5O_SB_SB_EEPNS0_18PositionalEncodingISB_SB_EEEEEEEESaIS5X_EERNSA_IT_EEm[_ZN6mlpack3ann21NetworkInitializationINS0_20RandomInitializationEJEE10InitializeIdEEvRKSt6vectorIN5boost7variantIPNS0_18AdaptiveMaxPoolingIN4arma3MatIdEESB_EEJPNS0_19AdaptiveMeanPoolingISB_SB_EEPNS0_3AddISB_SB_EEPNS0_8AddMergeISB_SB_JEEEPNS0_12AlphaDropoutISB_SB_EEPNS0_17AtrousConvolutionINS0_16NaiveConvolutionINS0_16ValidConvolutionEEENSR_INS0_15FullConvolutionEEEST_SB_SB_EEPNS0_9BaseLayerINS0_16LogisticFunctionESB_SB_EEPNSY_INS0_16IdentityFunctionESB_SB_EEPNSY_INS0_12TanhFunctionESB_SB_EEPNSY_INS0_16SoftplusFunctionESB_SB_EEPNSY_INS0_17RectifierFunctionESB_SB_EEPNS0_9BatchNormISB_SB_EEPNS0_21BilinearInterpolationISB_SB_EEPNS0_4CELUISB_SB_EEPNS0_6ConcatISB_SB_JEEEPNS0_11ConcatenateISB_SB_EEPNS0_17ConcatPerformanceINS0_21NegativeLogLikelihoodISB_SB_EESB_SB_EEPNS0_8ConstantISB_SB_EEPNS0_11ConvolutionIST_SV_ST_SB_SB_EEPNS0_5CReLUISB_SB_EEPNS0_11DropConnectISB_SB_EEPNS0_7DropoutISB_SB_EEPNS0_3ELUISB_SB_EEPNS0_8FastLSTMISB_SB_EEPNS0_12FlexibleReLUISB_SB_EEPNS0_3GRUISB_SB_EEPNS0_8HardTanHISB_SB_EEPNS0_4JoinISB_SB_EEPNS0_9LayerNormISB_SB_EEPNS0_9LeakyReLUISB_SB_EEPNS0_6LinearISB_SB_NS0_13NoRegularizerEEEPNS0_12LinearNoBiasISB_SB_S32_EEPNS0_10LogSoftMaxISB_SB_EEPNS0_6LookupISB_SB_EEPNS0_4LSTMISB_SB_EEPNS0_10MaxPoolingISB_SB_EEPNS0_11MeanPoolingISB_SB_EEPNS0_23MiniBatchDiscriminationISB_SB_EEPNS0_16MultiplyConstantISB_SB_EEPNS0_13MultiplyMergeISB_SB_JEEEPS1V_PNS0_11NoisyLinearISB_SB_EEPNS0_7PaddingISB_SB_EEPNS0_5PReLUISB_SB_EEPNS0_7SoftmaxISB_SB_EEPNS0_14SpatialDropoutISB_SB_EEPNS0_21TransposedConvolutionIST_ST_ST_SB_SB_EEPNS0_10WeightNormISB_SB_JEEENS7_IPNS0_8Linear3DISB_SB_S32_EEJPNS0_7GlimpseISB_SB_EEPNS0_7HighwayISB_SB_JEEEPNS0_18MultiheadAttentionISB_SB_S32_EEPNS0_9RecurrentISB_SB_JEEEPNS0_18RecurrentAttentionISB_SB_EEPNS0_15ReinforceNormalISB_SB_EEPNS0_17ReparametrizationISB_SB_EEPNS0_6SelectISB_SB_EEPNS0_10SequentialISB_SB_Lb0EJEEEPNS59_ISB_SB_Lb1EJEEEPNS0_7SubviewISB_SB_EEPNS0_13VRClassRewardISB_SB_EEPNS0_16VirtualBatchNormISB_SB_EEPNS0_3RBFISB_SB_NS0_16GaussianFunctionEEEPNSY_IS5O_SB_SB_EEPNS0_18PositionalEncodingISB_SB_EEEEEEEESaIS5X_EERNSA_IT_EEm]+0x248): undefined reference to `TLS init function for arma::mt19937_64_instance'
/usr/bin/ld: minimumReproducableCodeForMLError.cpp:(.text._ZN6mlpack3ann21NetworkInitializationINS0_20RandomInitializationEJEE10InitializeIdEEvRKSt6vectorIN5boost7variantIPNS0_18AdaptiveMaxPoolingIN4arma3MatIdEESB_EEJPNS0_19AdaptiveMeanPoolingISB_SB_EEPNS0_3AddISB_SB_EEPNS0_8AddMergeISB_SB_JEEEPNS0_12AlphaDropoutISB_SB_EEPNS0_17AtrousConvolutionINS0_16NaiveConvolutionINS0_16ValidConvolutionEEENSR_INS0_15FullConvolutionEEEST_SB_SB_EEPNS0_9BaseLayerINS0_16LogisticFunctionESB_SB_EEPNSY_INS0_16IdentityFunctionESB_SB_EEPNSY_INS0_12TanhFunctionESB_SB_EEPNSY_INS0_16SoftplusFunctionESB_SB_EEPNSY_INS0_17RectifierFunctionESB_SB_EEPNS0_9BatchNormISB_SB_EEPNS0_21BilinearInterpolationISB_SB_EEPNS0_4CELUISB_SB_EEPNS0_6ConcatISB_SB_JEEEPNS0_11ConcatenateISB_SB_EEPNS0_17ConcatPerformanceINS0_21NegativeLogLikelihoodISB_SB_EESB_SB_EEPNS0_8ConstantISB_SB_EEPNS0_11ConvolutionIST_SV_ST_SB_SB_EEPNS0_5CReLUISB_SB_EEPNS0_11DropConnectISB_SB_EEPNS0_7DropoutISB_SB_EEPNS0_3ELUISB_SB_EEPNS0_8FastLSTMISB_SB_EEPNS0_12FlexibleReLUISB_SB_EEPNS0_3GRUISB_SB_EEPNS0_8HardTanHISB_SB_EEPNS0_4JoinISB_SB_EEPNS0_9LayerNormISB_SB_EEPNS0_9LeakyReLUISB_SB_EEPNS0_6LinearISB_SB_NS0_13NoRegularizerEEEPNS0_12LinearNoBiasISB_SB_S32_EEPNS0_10LogSoftMaxISB_SB_EEPNS0_6LookupISB_SB_EEPNS0_4LSTMISB_SB_EEPNS0_10MaxPoolingISB_SB_EEPNS0_11MeanPoolingISB_SB_EEPNS0_23MiniBatchDiscriminationISB_SB_EEPNS0_16MultiplyConstantISB_SB_EEPNS0_13MultiplyMergeISB_SB_JEEEPS1V_PNS0_11NoisyLinearISB_SB_EEPNS0_7PaddingISB_SB_EEPNS0_5PReLUISB_SB_EEPNS0_7SoftmaxISB_SB_EEPNS0_14SpatialDropoutISB_SB_EEPNS0_21TransposedConvolutionIST_ST_ST_SB_SB_EEPNS0_10WeightNormISB_SB_JEEENS7_IPNS0_8Linear3DISB_SB_S32_EEJPNS0_7GlimpseISB_SB_EEPNS0_7HighwayISB_SB_JEEEPNS0_18MultiheadAttentionISB_SB_S32_EEPNS0_9RecurrentISB_SB_JEEEPNS0_18RecurrentAttentionISB_SB_EEPNS0_15ReinforceNormalISB_SB_EEPNS0_17ReparametrizationISB_SB_EEPNS0_6SelectISB_SB_EEPNS0_10SequentialISB_SB_Lb0EJEEEPNS59_ISB_SB_Lb1EJEEEPNS0_7SubviewISB_SB_EEPNS0_13VRClassRewardISB_SB_EEPNS0_16VirtualBatchNormISB_SB_EEPNS0_3RBFISB_SB_NS0_16GaussianFunctionEEEPNSY_IS5O_SB_SB_EEPNS0_18PositionalEncodingISB_SB_EEEEEEEESaIS5X_EERNSA_IT_EEm[_ZN6mlpack3ann21NetworkInitializationINS0_20RandomInitializationEJEE10InitializeIdEEvRKSt6vectorIN5boost7variantIPNS0_18AdaptiveMaxPoolingIN4arma3MatIdEESB_EEJPNS0_19AdaptiveMeanPoolingISB_SB_EEPNS0_3AddISB_SB_EEPNS0_8AddMergeISB_SB_JEEEPNS0_12AlphaDropoutISB_SB_EEPNS0_17AtrousConvolutionINS0_16NaiveConvolutionINS0_16ValidConvolutionEEENSR_INS0_15FullConvolutionEEEST_SB_SB_EEPNS0_9BaseLayerINS0_16LogisticFunctionESB_SB_EEPNSY_INS0_16IdentityFunctionESB_SB_EEPNSY_INS0_12TanhFunctionESB_SB_EEPNSY_INS0_16SoftplusFunctionESB_SB_EEPNSY_INS0_17RectifierFunctionESB_SB_EEPNS0_9BatchNormISB_SB_EEPNS0_21BilinearInterpolationISB_SB_EEPNS0_4CELUISB_SB_EEPNS0_6ConcatISB_SB_JEEEPNS0_11ConcatenateISB_SB_EEPNS0_17ConcatPerformanceINS0_21NegativeLogLikelihoodISB_SB_EESB_SB_EEPNS0_8ConstantISB_SB_EEPNS0_11ConvolutionIST_SV_ST_SB_SB_EEPNS0_5CReLUISB_SB_EEPNS0_11DropConnectISB_SB_EEPNS0_7DropoutISB_SB_EEPNS0_3ELUISB_SB_EEPNS0_8FastLSTMISB_SB_EEPNS0_12FlexibleReLUISB_SB_EEPNS0_3GRUISB_SB_EEPNS0_8HardTanHISB_SB_EEPNS0_4JoinISB_SB_EEPNS0_9LayerNormISB_SB_EEPNS0_9LeakyReLUISB_SB_EEPNS0_6LinearISB_SB_NS0_13NoRegularizerEEEPNS0_12LinearNoBiasISB_SB_S32_EEPNS0_10LogSoftMaxISB_SB_EEPNS0_6LookupISB_SB_EEPNS0_4LSTMISB_SB_EEPNS0_10MaxPoolingISB_SB_EEPNS0_11MeanPoolingISB_SB_EEPNS0_23MiniBatchDiscriminationISB_SB_EEPNS0_16MultiplyConstantISB_SB_EEPNS0_13MultiplyMergeISB_SB_JEEEPS1V_PNS0_11NoisyLinearISB_SB_EEPNS0_7PaddingISB_SB_EEPNS0_5PReLUISB_SB_EEPNS0_7SoftmaxISB_SB_EEPNS0_14SpatialDropoutISB_SB_EEPNS0_21TransposedConvolutionIST_ST_ST_SB_SB_EEPNS0_10WeightNormISB_SB_JEEENS7_IPNS0_8Linear3DISB_SB_S32_EEJPNS0_7GlimpseISB_SB_EEPNS0_7HighwayISB_SB_JEEEPNS0_18MultiheadAttentionISB_SB_S32_EEPNS0_9RecurrentISB_SB_JEEEPNS0_18RecurrentAttentionISB_SB_EEPNS0_15ReinforceNormalISB_SB_EEPNS0_17ReparametrizationISB_SB_EEPNS0_6SelectISB_SB_EEPNS0_10SequentialISB_SB_Lb0EJEEEPNS59_ISB_SB_Lb1EJEEEPNS0_7SubviewISB_SB_EEPNS0_13VRClassRewardISB_SB_EEPNS0_16VirtualBatchNormISB_SB_EEPNS0_3RBFISB_SB_NS0_16GaussianFunctionEEEPNSY_IS5O_SB_SB_EEPNS0_18PositionalEncodingISB_SB_EEEEEEEESaIS5X_EERNSA_IT_EEm]+0x24f): undefined reference to `arma::mt19937_64_instance'
/usr/bin/ld: /tmp/ccNWv7em.o: in function `void mlpack::ann::Dropout<arma::Mat<double>, arma::Mat<double> >::Forward<double>(arma::Mat<double> const&, arma::Mat<double>&)':
minimumReproducableCodeForMLError.cpp:(.text._ZN6mlpack3ann7DropoutIN4arma3MatIdEES4_E7ForwardIdEEvRKNS3_IT_EERS8_[_ZN6mlpack3ann7DropoutIN4arma3MatIdEES4_E7ForwardIdEEvRKNS3_IT_EERS8_]+0xd7): undefined reference to `TLS init function for arma::mt19937_64_instance'
/usr/bin/ld: minimumReproducableCodeForMLError.cpp:(.text._ZN6mlpack3ann7DropoutIN4arma3MatIdEES4_E7ForwardIdEEvRKNS3_IT_EERS8_[_ZN6mlpack3ann7DropoutIN4arma3MatIdEES4_E7ForwardIdEEvRKNS3_IT_EERS8_]+0xe7): undefined reference to `arma::mt19937_64_instance'
/usr/bin/ld: /tmp/ccNWv7em.o: in function `void mlpack::ann::SpatialDropout<arma::Mat<double>, arma::Mat<double> >::Forward<double>(arma::Mat<double> const&, arma::Mat<double>&)':
minimumReproducableCodeForMLError.cpp:(.text._ZN6mlpack3ann14SpatialDropoutIN4arma3MatIdEES4_E7ForwardIdEEvRKNS3_IT_EERS8_[_ZN6mlpack3ann14SpatialDropoutIN4arma3MatIdEES4_E7ForwardIdEEvRKNS3_IT_EERS8_]+0x386): undefined reference to `TLS init function for arma::mt19937_64_instance'
/usr/bin/ld: minimumReproducableCodeForMLError.cpp:(.text._ZN6mlpack3ann14SpatialDropoutIN4arma3MatIdEES4_E7ForwardIdEEvRKNS3_IT_EERS8_[_ZN6mlpack3ann14SpatialDropoutIN4arma3MatIdEES4_E7ForwardIdEEvRKNS3_IT_EERS8_]+0x38d): undefined reference to `arma::mt19937_64_instance'
/usr/bin/ld: /tmp/ccNWv7em.o: in function `void mlpack::ann::AlphaDropout<arma::Mat<double>, arma::Mat<double> >::Forward<double>(arma::Mat<double> const&, arma::Mat<double>&)':
minimumReproducableCodeForMLError.cpp:(.text._ZN6mlpack3ann12AlphaDropoutIN4arma3MatIdEES4_E7ForwardIdEEvRKNS3_IT_EERS8_[_ZN6mlpack3ann12AlphaDropoutIN4arma3MatIdEES4_E7ForwardIdEEvRKNS3_IT_EERS8_]+0xf4): undefined reference to `TLS init function for arma::mt19937_64_instance'
/usr/bin/ld: minimumReproducableCodeForMLError.cpp:(.text._ZN6mlpack3ann12AlphaDropoutIN4arma3MatIdEES4_E7ForwardIdEEvRKNS3_IT_EERS8_[_ZN6mlpack3ann12AlphaDropoutIN4arma3MatIdEES4_E7ForwardIdEEvRKNS3_IT_EERS8_]+0x104): undefined reference to `arma::mt19937_64_instance'
/usr/bin/ld: /tmp/ccNWv7em.o: in function `void mlpack::ann::DropConnect<arma::Mat<double>, arma::Mat<double> >::Forward<double>(arma::Mat<double> const&, arma::Mat<double>&)':
minimumReproducableCodeForMLError.cpp:(.text._ZN6mlpack3ann11DropConnectIN4arma3MatIdEES4_E7ForwardIdEEvRKNS3_IT_EERS8_[_ZN6mlpack3ann11DropConnectIN4arma3MatIdEES4_E7ForwardIdEEvRKNS3_IT_EERS8_]+0x16c): undefined reference to `TLS init function for arma::mt19937_64_instance'
/usr/bin/ld: minimumReproducableCodeForMLError.cpp:(.text._ZN6mlpack3ann11DropConnectIN4arma3MatIdEES4_E7ForwardIdEEvRKNS3_IT_EERS8_[_ZN6mlpack3ann11DropConnectIN4arma3MatIdEES4_E7ForwardIdEEvRKNS3_IT_EERS8_]+0x17c): undefined reference to `arma::mt19937_64_instance'
collect2: error: ld returned 1 exit status
Edit 1:
As per request in comments below, I tried running nm
tool on my output file, armadillo, and mlpack and this is the output.
So, I tired it on armadillo and mlpack I got some values I did nm --demangle libarmadillo.so.10.7.4 | grep arma::mt and I got
00000000000008 B arma::mt19937_64_instance
00000000000cdd0 T TLS init function for arma::mt19937_64_instance
and for libmlpack.so.3.4 I got
U arma::mat19937_64_instance
000000199730 W void arma::op_stddev::apply<arma::Mat..........................> //This line doesn't have mat19937_64
U TLS init function for arma::mt19937_64_instance