Mex compilation error when linking with gmp on Linux

2 次查看(过去 30 天)
I am using a mex command which works fine in Windows but when I try to mex on Linux, I get an error regarding gmp library.
I have linked to the same gmp library using GCC outside of Matlab successfully. Below is the command
gcc -x c++ -I. -L. -lstdc++ -lm -lIp_cordic_v6_0_bitacc_cmodel -Wl,-rpath,. -o run_bitacc_cmodel run_bitacc_cmodel.c
However within Matlab (tried 2019 and 2020), I get the below error:
gmp.h:37:61: error: ‘GMP_NAIL_BITS’ was not declared in this scope
#define GMP_NUMB_MASK ((~ __GMP_CAST (mp_limb_t, 0)) >> GMP_NAIL_BITS)
Below is the mex command I am using to compile the code in Matlab on Linux:
mex -lstdc++ -lm -lgmp -lIp_cordic_v6_0_bitacc_cmodel cordic_sin_cos.cpp -v
Below is the mex command I am using to compile the code in Matlab on Windows which works fine:
mex cordic_sin_cos.cpp libIp_cordic_v6_0_bitacc_cmodel.lib

回答(1 个)

Prateekshya
Prateekshya 2023-8-25
As per my understanding, you are encountering an error related to the GMP library when attempting to use a mex command on Linux. The error message specifically mentions that "GMP_NAIL_BITS" was not declared in the scope of the "gmp.h" header file.
I assume that you have verified the installation and linking of GMP library. You can consider adding the "-D__GMP_CAST" flag to the mex command. This flag is used to define the "__GMP_CAST" macro, which might be required by the code you are compiling. The modified mex command would look like thie following:
>> mex --lstdc++ -lm -lgmp -D__GMP_CAST -lIp_cordic_v6_0_bitacc_cmodel cordic_sin_cos.cpp -v

类别

Help CenterFile Exchange 中查找有关 Write C Functions Callable from MATLAB (MEX Files) 的更多信息

标签

产品


版本

R2020b

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by