我正在尝试制作一个 NesC 程序以与 TOSSIM(TinyOS 模拟器)一起使用,包括 gmp 库 这是我的代码示例
event void Boot.booted()
{
//dbg("MAPC", "Booted\n");
//int g = 2;
const char * const num = "10387922662657137735272585565990678424704150824246588991894422884684285337052622755228646547137908394766337363629003511269209591656314972254747436173398683";
int err;
mpz_t n;
err = mpz_init_set_str(n, num, 10);
dbg("MAPC","%d",sizeof(n));
mpz_clear(n);
}
使用 make micaz sim
或 env "CFLAGS = -lgmp"make micaz sim
编译运行良好
当我尝试通过 python 脚本执行它时,出现此错误:
Traceback (most recent call last):
File "kdk.py", line 4, in <module>
from TOSSIM import *
File "/opt/tinyos-2.1.2/apps/MAP/TOSSIM.py", line 7, in <module>
import _TOSSIM
ImportError: /opt/tinyos-2.1.2/apps/MAP/_TOSSIMmodule.so: undefined symbol: __gmpz_init_set_str
最佳答案
libgmp 中的一个符号无法解析,看起来它不是用这个库编译的。
您应该尝试对-lgmp使用LDFLAGS,而不是CFLAGS。然而LDFLAGS可能会在makefile中被覆盖,所以,你最好在makefile中更新它。
关于python - NesC/GMP undefined symbol ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28905427/