NesC / GMP неопределенный символ
Я пытаюсь сделать программу 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
1 ответ
Один из символов из libgmp не может быть разрешен, и похоже, что он не скомпилирован с этой библиотекой.
Вы должны попробовать использовать LDFLAGS для -lgmp вместо CFLAGS. Однако LDFLAGS, вероятно, переопределяет в make- файле, поэтому вам лучше обновить его внутри make-файла.