Проблема с библиотекой math.h в geany

Как правильно задавать вопросы Правильно сформулированный вопрос и его грамотное оформление способствует высокой вероятности получения достаточно содержательного и по существу ответа. Общая рекомендация по составлению тем: 1. Для начала воспользуйтесь поиском форума. 2. Укажите версию ОС вместе с разрядностью. Пример: LM 19.3 x64, LM Sarah x32 3. DE. Если вопрос касается двух, то через запятую. (xfce, KDE, cinnamon, mate) 4. Какое железо. (достаточно вывод inxi -Fxz в спойлере (как пользоваться спойлером смотрим здесь)) или же дать ссылку на hw-probe 5. Суть. Желательно с выводом консоли, логами. 6. Скрин. Просьба указывать 2, 3 и 4 независимо от того, имеет ли это отношение к вопросу или нет. Так же не забываем об общих правилах Как пример вот
no avatar

Автор темы
Dimmension
Сообщения: 17
Зарегистрирован: 18 дек 2020, 21:41
Контактная информация:

Проблема с библиотекой math.h в geany

#1

18 дек 2020, 21:51

Geany не видит библиотеку math.h, соответственно, компилятор воспринимает все математические функции как ошибки. Как подключить библиотеку?


no avatar

Автор темы
Dimmension
Сообщения: 17
Зарегистрирован: 18 дек 2020, 21:41
Контактная информация:

Проблема с библиотекой math.h в geany

#3

19 дек 2020, 06:26

Гуглил, однако, но все советы сводятся к добавлению -lm к команде компиляции в терминале. Но мне то надо что-то с geany сделать. Библиотеку поставил:
sudo apt-get install libm. a
но это не помогло.

Аватара пользователя

WWolf
Сообщения: 3898
Зарегистрирован: 14 фев 2018, 00:51
Решено: 31
Откуда: Краснодар
Благодарил (а): 1688 раз
Поблагодарили: 1213 раз
Контактная информация:

Проблема с библиотекой math.h в geany

#4

19 дек 2020, 10:46

Dimmension, исходник в студию...

Аватара пользователя

rogoznik
Сообщения: 10044
Зарегистрирован: 27 июн 2017, 13:36
Решено: 129
Откуда: Нижний Тагил
Благодарил (а): 776 раз
Поблагодарили: 1958 раз
Контактная информация:

Проблема с библиотекой math.h в geany

#5

19 дек 2020, 16:19

Dimmension, может покажешь свой исходник, а то тут нет экстрасенсов чтоб угадывать что и как ты подключаешь
ИзображениеИзображение

no avatar

Автор темы
Dimmension
Сообщения: 17
Зарегистрирован: 18 дек 2020, 21:41
Контактная информация:

Проблема с библиотекой math.h в geany

#6

19 дек 2020, 16:22

Простите, не понял, исходник чего - текст программы, которую не могу скомпилировать?

Аватара пользователя

rogoznik
Сообщения: 10044
Зарегистрирован: 27 июн 2017, 13:36
Решено: 129
Откуда: Нижний Тагил
Благодарил (а): 776 раз
Поблагодарили: 1958 раз
Контактная информация:

Проблема с библиотекой math.h в geany

#7

19 дек 2020, 16:23

Dimmension писал(а):
19 дек 2020, 16:22
Простите, не понял, исходник чего - текст программы, которую не могу скомпилировать?
Да
ИзображениеИзображение

no avatar

Автор темы
Dimmension
Сообщения: 17
Зарегистрирован: 18 дек 2020, 21:41
Контактная информация:

Проблема с библиотекой math.h в geany

#8

19 дек 2020, 16:44

Код: Выделить всё

#include <stdio.h>
#include <stdlib.h>
#include <math.h>

double pi=3.141592653589;
double A2, A3, A4, A5, A6, A7, A8, A9, A10;
double eps, r0;
int N;

double a31=0.075,           a32=0.225,
       a41=44.0/45.0,       a42=-56.0/15.0,       a43=32.0/9.0,
       a51=19372.0/6561.0,  a52=-25360.0/2187.0,  a53=64448.0/6561.0,  a54=-212.0/729.0,
       a61=9017.0/3168.0,   a62=-355.0/33.0,      a63=46732.0/5247.0,  a64=49.0/176.0,    a65=-5103.0/18656.0,
       a71=35.0/384.0,                            a73=500.0/1113.0,    a74=125.0/192.0,   a75=-2187.0/6784.0,     a76=11.0/84.0;

double b21=5179.0/57600.0,                        b23=7571.0/16695.0,  b24=0.6140625,     b25=-92097.0/339200.0,  b26=187.0/2100.0,  b27=0.025;

/*        Dorman-Prince algorithm	*/

       double DoPrin(double t0, double tf,  double dx0, double dz0, double x0, double z0, double a, double q, double ph0){

	FILE *fp;			//creating file for writing  data
	if((fp=fopen("Quad_traect_2.7.dat", "w"))==NULL)
	{
		perror("Quad_traect_2.7.dat");
		return 1;
	}

double t;       //	running time
double x;       //	1-st variable
double y;       //	2-d variable
double dx;      //	3-rd variable
double dy;      //	4-th variable
double dx1, dx2, dy1, dy2, x1, x2, y1, y2;
float R1, R2, R3, R4, al0, al1, al2, al3, al4;
double dFx3, dFy3, dFx4, dFy4, dFx5, dFy5, dFx6, dFy6, dFx7, dFy7, dFx8, dFy8, dFx9, dFy9, dFx10, dFy10;
double wwx, wwy;
double F01, F21, F31, F41, F51, F61, F71;
double F02, F22, F32, F42, F52, F62, F72;
double F03, F23, F33, F43, F53, F63, F73;
double F04, F24, F34, F44, F54, F64, F74;
double Nt=tf*pi;         //finish time
int n=1;		// step calculator
float h=0.1;   //	initial step
  x=x0; x1=x0; x2=x0;
  y=z0; y1=z0; y2=z0;
  dx=dx0; dx1=dx0; dx2=dx0;
  dy=dz0; dy1=dz0; dy2=dz0;
  t=t0;
  N=1;
  printf("t= %lf  x= %lf  y= %lf  step= %lf\n",t/pi,x,y,h);
  fprintf(fp, "%lf %lf  %lf\n",t/pi,x,y);

          	  while(t<=Nt)
          {
int k=0;
/*      derivatives for spatial harmonics       */

dFx3=3*x*x-3*y*y;
dFy3=-6*x*y;
dFx4=4*pow(x,3)-12*x*y*y;
dFy4=-12*x*x*y+4*pow(y,3);
dFx5=5*pow(x,4)-30*x*x*y*y+5*pow(y,4);
dFy5=-20*pow(x,3)*y+20*x*pow(y,3);
dFx6=6*pow(x,5)-60*pow(x,3)*y*y*+30*x*pow(y,4);
dFy6=-30*pow(x,4)*y+60*x*x*pow(y,3)-6*pow(y,5);
dFx7=7*pow(x,6)-105*pow(x,4)*y*y+105*x*x*pow(y,4)-7*pow(y,6);
dFy7=-42*pow(x,5)*y+140*pow(x,3)*pow(y,3)-42*x*pow(y,5);
dFx8=8*pow(x,7)-168*pow(x,5)*y*y+280*pow(x,3)*pow(y,4)-56*x*pow(y,6);
dFy8=-56*pow(x,6)*y+280*pow(x,4)*pow(y,3)-168*x*x*pow(y,5)+8*pow(y,7);
dFx9=9*pow(x,8)-252*pow(x,6)*y*y+630*pow(x,4)*pow(y,4)-252*x*x*pow(y,6)+9*pow(y,8);
dFy9=-72*pow(x,7)*y+504*pow(x,5)*pow(y,3)-504*pow(x,3)*pow(y,5)+72*x*pow(y,7);
dFx10=10*pow(x,9)-360*pow(x,7)*y*y+1260*pow(x,5)*pow(y,4)-840*pow(x,3)*pow(y,6)+90*x*pow(y,8);
dFy10=-90*pow(x,8)*y+840*pow(x,6)*pow(y,3)-1260*pow(x,4)*pow(y,5)+360*x*x*pow(y,7)-10*pow(y,9);

wwx=A3*dFx3/A2+A4*dFx4/(A2*A2)+A5*dFx5/pow(A2,3)+A6*dFx6/pow(A2,4)+A7*dFx7/pow(A2,5)+A8*dFx8/pow(A2,6)+A9*dFx9/pow(A2,7)+A10*dFx10/pow(A2,8);
wwy=A3*dFy3/A2+A4*dFy4/(A2*A2)+A5*dFy5/pow(A2,3)+A6*dFy6/pow(A2,4)+A7*dFy7/pow(A2,5)+A8*dFy8/pow(A2,6)+A9*dFy9/pow(A2,7)+A10*dFy10/pow(A2,8);

la1:

if(k>10) goto la2;
F01=-(a+2*q*cos(2*(t-ph0)))*(x+0.5*wwx);     //integrated function 1
F02=(a+2*q*cos(2*(t-ph0)))*(y-0.5*wwy);        //integrated function 2
F03=dx;                                       //integrated function 3
F04=dy;                                       //integrated function 4

F21=-(a+2*q*cos(2*(t+h/5.0-ph0)))*(x+h*F03/5.0+0.5*wwx);
F22=(a+2*q*cos(2*(t+h/5.0-ph0)))*(y+h*F04/5.0-0.5*wwy);
F23=dx+h*F01/5.0;
F24=dy+h*F02/5.0;

F31=-(a+2*q*cos(2*(t+0.3*h-ph0)))*(x+h*(a31*F03+a32*F23)+0.5*wwx);
F32=(a+2*q*cos(2*(t+0.3*h-ph0)))*(y+h*(a31*F04+a32*F24)-0.5*wwy);
F33=dx+h*(a31*F01+a32*F21);
F34=dy+h*(a31*F02+a32*F22);

F41=-(a+2*q*cos(2*(t+0.8*h-ph0)))*(x+h*(a41*F03+a42*F23+a43*F33)+0.5*wwx);
F42=(a+2*q*cos(2*(t+0.8*h-ph0)))*(y+h*(a41*F04+a42*F24+a43*F34)-0.5*wwy);
F43=dx+h*(a41*F01+a42*F21+a43*F31);
F44=dy+h*(a41*F02+a42*F22+a43*F32);

F51=-(a+2*q*cos(2*(t+8.0*h/9.0-ph0)))*(x+h*(a51*F03+a52*F23+a53*F33+a54*F43)+0.5*wwx);
F52=(a+2*q*cos(2*(t+8.0*h/9.0-ph0)))*(y+h*(a51*F04+a52*F24+a53*F34+a54*F44)-0.5*wwy);
F53=dx+h*(a51*F01+a52*F21+a53*F31+a54*F41);
F54=dy+h*(a51*F02+a52*F22+a53*F32+a54*F42);

F61=-(a+2*q*cos(2*(t+h-ph0)))*(x+h*(a61*F03+a62*F23+a63*F33+a64*F43+a65*F53)+0.5*wwx);
F62=(a+2*q*cos(2*(t+h-ph0)))*(y+h*(a61*F04+a62*F24+a63*F34+a64*F44+a65*F54)-0.5*wwy);
F63=dx+h*(a61*F01+a62*F21+a63*F31+a64*F41+a65*F51);
F64=dy+h*(a61*F02+a62*F22+a63*F32+a64*F42+a65*F52);

F71=-(a+2*q*cos(2*(t+h-ph0)))*(x+h*(a71*F03+a73*F33+a74*F43+a75*F53+a76*F63)+0.5*wwx);
F72=(a+2*q*cos(2*(t+h-ph0)))*(y+h*(a71*F04+a73*F34+a74*F44+a75*F54+a76*F64)-0.5*wwy);
F73=dx+h*(a71*F01+a73*F31+a74*F41+a75*F51+a76*F61);
F74=dy+h*(a71*F02+a73*F32+a74*F42+a75*F52+a76*F62);

dx1=dx+h*(a71*F01+a73*F31+a74*F41+a75*F51+a76*F61);
dx2=dx+h*(b21*F01+b23*F31+b24*F41+b25*F51+b26*F61+b27*F71);
dy1=dy+h*(a71*F02+a73*F32+a74*F42+a75*F52+a76*F62);
dy2=dy+h*(b21*F02+b23*F32+b24*F42+b25*F52+b26*F62+b27*F72);
x1=x+h*(a71*F03+a73*F33+a74*F43+a75*F53+a76*F63);
x2=x+h*(b21*F03+b23*F33+b24*F43+b25*F53+b26*F63+b27*F73);
y1=y+h*(a71*F04+a73*F34+a74*F44+a75*F54+a76*F64);
y2=y+h*(b21*F04+b23*F34+b24*F44+b25*F54+b26*F64+b27*F74);

        R1=fabs(dx2-dx1);
        R2=fabs(dy2-dy1);
        R3=fabs(x2-x1);
        R4=fabs(y2-y1);

        if(R1>=eps) {
        	al1=sqrt(sqrt(eps/R1));
        	al2=sqrt(sqrt(eps/R2));
        	al3=sqrt(sqrt(eps/R3));
        	al4=sqrt(sqrt(eps/R4));
        	al0=fmin(fmin(al1,al2),fmin(al3,al4));
        	h=0.95*al0*h;
        	k++;
        	goto la1;
        }
        else
        if(R2>=eps) {
        	al1=sqrt(sqrt(eps/R1));
        	al2=sqrt(sqrt(eps/R2));
        	al3=sqrt(sqrt(eps/R3));
        	al4=sqrt(sqrt(eps/R4));
        	al0=fmin(fmin(al1,al2),fmin(al3,al4));
        	h=0.95*al0*h;
        	k++;
        	goto la1;
        }
        else
        if(R3>=eps) {
        	al1=sqrt(sqrt(eps/R1));
        	al2=sqrt(sqrt(eps/R2));
        	al3=sqrt(sqrt(eps/R3));
        	al4=sqrt(sqrt(eps/R4));
        	al0=fmin(fmin(al1,al2),fmin(al3,al4));
        	h=0.95*al0*h;
        	k++;
        	goto la1;
        }
        else
        if(R4>=eps) {
        	al1=sqrt(sqrt(eps/R1));
        	al2=sqrt(sqrt(eps/R2));
        	al3=sqrt(sqrt(eps/R3));
        	al4=sqrt(sqrt(eps/R4));
        	al0=fmin(fmin(al1,al2),fmin(al3,al4));
        	h=0.95*al0*h;
        	k++;
        	goto la1;
        }

        else
        	if(R1<eps/64.0)
        		if(R2<eps/64)
        			if(R3<eps/64)
        				if(R4<eps/64) {
        	al1=sqrt(sqrt(eps/R1));
        	al2=sqrt(sqrt(eps/R2));
        	al3=sqrt(sqrt(eps/R3));
        	al4=sqrt(sqrt(eps/R4));
        	al0=fmax(fmax(al1,al2),fmax(al3,al4));
        	h=0.95*al0*h;
        	k++;
        	goto la1;
        }
        if(sqrt(x2*x2+y2*y2)>r0)
            break;
la2:
        x=x2;
        y=y2;
        dx=dx2;
        dy=dy2;
        t=(float)t+h;
        n++;
        printf("t= %lf x= %lf y= %lf  h= %lf\n",t/pi,x,y,h);
        fprintf(fp, "%lf %lf  %lf\n",t/pi,x,y);
        }
    if (t<Nt) N=0;
    if (t>2*Nt) N=0;

  printf("n= %d  N= %d\n",n,N);

    return N;
}

  /*	Main program	*/

  int main(){


/*      multipole amplitudes        */

    A2=1.0;
    A3=0.0;
    A4=0.0;
    A5=0.0;
    A6=0.0;
    A7=0.0;
    A8=0.0;
    A9=0.0;
    A10=0.0;

  double t0=0.0;              //initial time
  double tf=50.0;             //finish time in periods HF field
  double x0=0.5;			//initial value of x-coordinate
  double z0=0.5;           //initial value y-coordinate
  double dx0=0.0;          //initial value x-projection of velocity
  double dz0=0.0;			//initial value y-projection of velocity
  double ph0=0.0*pi;             //initial phase
        eps=1.0E-6; 	        //accuracy
        r0=1.14;            //radius of field

  double q=0.7;             //q-parameter
  double a=0.224;             //a-parameter

  DoPrin(t0, tf, dx0, dz0, x0, z0, a, q, ph0);

  return 0;
}
 ! Сообщение из: symon2014
Слышал что нибудь о форматировании текста?

no avatar

Автор темы
Dimmension
Сообщения: 17
Зарегистрирован: 18 дек 2020, 21:41
Контактная информация:

Проблема с библиотекой math.h в geany

#9

19 дек 2020, 16:52

Таки да, но все форматирование почему то исчезло, когда сюда вставил.

Аватара пользователя

symon2014
Сообщения: 5934
Зарегистрирован: 16 дек 2017, 21:59
Решено: 37
Откуда: Феодосия
Благодарил (а): 32 раза
Поблагодарили: 750 раз
Контактная информация:

Проблема с библиотекой math.h в geany

#10

19 дек 2020, 16:53

Dimmension писал(а):
19 дек 2020, 16:52
все форматирование почему то исчезло, когда сюда вставил.
Панель форматирования текста в темах/ответах

no avatar

Автор темы
Dimmension
Сообщения: 17
Зарегистрирован: 18 дек 2020, 21:41
Контактная информация:

Проблема с библиотекой math.h в geany

#11

19 дек 2020, 16:57

Нет, но попробую воспользоваться в следующий раз.

Аватара пользователя

symon2014
Сообщения: 5934
Зарегистрирован: 16 дек 2017, 21:59
Решено: 37
Откуда: Феодосия
Благодарил (а): 32 раза
Поблагодарили: 750 раз
Контактная информация:

Проблема с библиотекой math.h в geany

#12

19 дек 2020, 17:13

Dimmension писал(а):
19 дек 2020, 06:26
sudo apt-get install libm. a
https://controlc.com/1687ba21
и вот прямо это поставилось?

Аватара пользователя

madesta
Сообщения: 2018
Зарегистрирован: 11 июн 2017, 21:47
Решено: 30
Откуда: BY
Благодарил (а): 79 раз
Поблагодарили: 434 раза
Контактная информация:

Проблема с библиотекой math.h в geany

#13

19 дек 2020, 17:19

Dimmension писал(а):
19 дек 2020, 06:26
но все советы сводятся к добавлению -lm к команде компиляции в терминале
Не сказал бы, что из предложенной вам ссылки http://pogugli.com/?360237 это предлагают все советы. Мне, например, бросилось в глаза ещё 2 совета (спойлер). Я не профи, но м.б. наведёт на мысли.
1. geany должен знать, где искать правильный список символов, и поэтому он читает источники всех открытых файлов, поэтому, если вам нужен полезный список символов, вы должны открыть все необходимые вам файлы заголовков перед началом программирования. Даже если geany хочет автоматически искать в заголовочных файлах, которые вы включаете, он не сможет угадать, какую версию gtk вы хотите использовать для вашего проекта (gtk2, gtk3, ...)..
2. Дело в том, что "math.h" — это имя, в том числе, файла из стандартной библиотеки. Поэтому, когда ты пишешь имя без пути, компилятор ищет его
1) в каталоге файла, который его включает
2) по путям, указанным в переменной окружения INCLUDE (а также в настройках Студии, если компилить в ней, а не в командной строке)
3) по путям, указанным в опциях компилятора
Значит, включать его можно с относительным путём #include "../Math/math.h"

Аватара пользователя

rogoznik
Сообщения: 10044
Зарегистрирован: 27 июн 2017, 13:36
Решено: 129
Откуда: Нижний Тагил
Благодарил (а): 776 раз
Поблагодарили: 1958 раз
Контактная информация:

Проблема с библиотекой math.h в geany

#14

19 дек 2020, 17:20

Dimmension, у меня норм компиляет

Код: Выделить всё

gcc qwe.cpp -lm -o qwe
Зайди в настройки Geany и пропиши там этот ключ для компиляции своего проекта
ИзображениеИзображение

no avatar

Автор темы
Dimmension
Сообщения: 17
Зарегистрирован: 18 дек 2020, 21:41
Контактная информация:

Проблема с библиотекой math.h в geany

#15

19 дек 2020, 17:39

В какой именно строке настройки прописать этод код?

no avatar

Автор темы
Dimmension
Сообщения: 17
Зарегистрирован: 18 дек 2020, 21:41
Контактная информация:

Проблема с библиотекой math.h в geany

#16

19 дек 2020, 17:42

и вот прямо это поставилось?
Не могу сказать точно, но очень похоже.

no avatar

Автор темы
Dimmension
Сообщения: 17
Зарегистрирован: 18 дек 2020, 21:41
Контактная информация:

Проблема с библиотекой math.h в geany

#17

19 дек 2020, 17:44

Я не профи, но м.б. наведёт на мысли.
Я тоже не профи, и просто не понял, что нужно делать.

Аватара пользователя

rogoznik
Сообщения: 10044
Зарегистрирован: 27 июн 2017, 13:36
Решено: 129
Откуда: Нижний Тагил
Благодарил (а): 776 раз
Поблагодарили: 1958 раз
Контактная информация:

Проблема с библиотекой math.h в geany

#18

19 дек 2020, 18:06

Dimmension, вот скажи мне ты хочешь научиться чему-то или как? Тебе сказано что надо сделать. Уж, будь добр, потрать время разобраться как это сделать. Тут не платная тех. поддержка чтоб давать тебе готовый ответ.
ИзображениеИзображение

Аватара пользователя

konstantin
Сообщения: 45
Зарегистрирован: 19 дек 2020, 17:45
Благодарил (а): 24 раза
Поблагодарили: 1 раз
Контактная информация:

Проблема с библиотекой math.h в geany

#19

19 дек 2020, 18:14

Запустите Geany и откройте нужный Вам проект, в котором компилятор не находит math.h .
Выбрать в меню : Сборка - Установить команды сборки .
Откроется окно "Свойства проекта". В этом окне в таблице "Команды для языка: С"
в строке "Build" нужно дописать к gcc -Wall -o "%e" "%f" дополнительно через пробел -lm .
Выглядеть будет так : gcc -Wall -o "%e" "%f" -lm
И всё будет работать.
Пояснение можете найти в книге Стивена Пратта "Язык программирования C. Лекции и упражнения, 6-е издание.pdf"
в 16-ой главе на странице 695(в параграфе "Немного тригонометрии") :

Если в процессе компиляции будет выдано сообщение, такое как
Undefined: _sqrt /* sqrt() -- это одна из математических функций */
Не определено: _sqrt
или
'sqrt': unresolved external
'sqrt': нераспознанный внешний идентификатор
либо нечто подобное, значит, компилятор-компоновщик не смог найти библиотеку ма­-
тематических функций. В системах Unix может потребоваться указать компоновщику
на необходимость поиска библиотеки математических функций с помощью флага - lm:
сс rect_pol.c - lm
Обратите внимание, что флаг - lm находится в конце команды. Причина в том,
что компоновщик вступает в игру после того, как компилятор скомпилирует файл С.
Компилятор GCC в системе Linux может вести себя в такой же манере:
gcc rect_pol.c -lm

no avatar

Автор темы
Dimmension
Сообщения: 17
Зарегистрирован: 18 дек 2020, 21:41
Контактная информация:

Проблема с библиотекой math.h в geany

#20

19 дек 2020, 20:00

rogoznik, спасибо большое за подробный и информативный ответ, без твоего совета я даже не знаю, как жил бы дальше.
Всем остальным участникам обсуждения - просто спасибо, и это вполне искренне.

Закрыто

Вернуться в «Cinnamon»

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и 11 гостей