dvdesolve / glrpt

Interactive GUI application for receiving, decoding and displaying LRPT images from the Russian Meteor-M type of weather satellites
GNU General Public License v3.0
32 stars 6 forks source link

error compiling glrpt-2.6.0 #16

Closed benb0jangles closed 3 years ago

benb0jangles commented 3 years ago

installed dependencies: gtk+-3.0 v3.22.30 SoapySDR 0.7.2 sudo apt-get install libturbojpeg-dev sudo apt-get install libconfig-dev

git clone https://github.com/dvdesolve/glrpt.git cd glrpt mkdir build cd build cmake -DCMAKE_INSTALL_PREFIX=/usr ..

then

~/glrpt-2.6.0/build$ make

Scanning dependencies of target glrpt [ 3%] Building C object src/CMakeFiles/glrpt.dir/common/shared.c.o [ 6%] Building C object src/CMakeFiles/glrpt.dir/decoder/bitop.c.o [ 10%] Building C object src/CMakeFiles/glrpt.dir/decoder/correlator.c.o [ 13%] Building C object src/CMakeFiles/glrpt.dir/decoder/dct.c.o [ 16%] Building C object src/CMakeFiles/glrpt.dir/decoder/ecc.c.o [ 20%] Building C object src/CMakeFiles/glrpt.dir/decoder/huffman.c.o [ 23%] Building C object src/CMakeFiles/glrpt.dir/decoder/medet.c.o [ 26%] Building C object src/CMakeFiles/glrpt.dir/decoder/met_jpg.c.o [ 30%] Building C object src/CMakeFiles/glrpt.dir/decoder/met_packet.c.o [ 33%] Building C object src/CMakeFiles/glrpt.dir/decoder/met_to_data.c.o [ 36%] Building C object src/CMakeFiles/glrpt.dir/decoder/rectify_meteor.c.o [ 40%] Building C object src/CMakeFiles/glrpt.dir/decoder/viterbi27.c.o [ 43%] Building C object src/CMakeFiles/glrpt.dir/demodulator/agc.c.o [ 46%] Building C object src/CMakeFiles/glrpt.dir/demodulator/demod.c.o [ 50%] Building C object src/CMakeFiles/glrpt.dir/demodulator/doqpsk.c.o [ 53%] Building C object src/CMakeFiles/glrpt.dir/demodulator/filters.c.o [ 56%] Building C object src/CMakeFiles/glrpt.dir/demodulator/pll.c.o [ 60%] Building C object src/CMakeFiles/glrpt.dir/glrpt/callbacks.c.o /home/benji/glrpt-2.6.0/src/glrpt/callbacks.c: In function ‘on_satellite_menuitem_activate’: /home/benji/glrpt-2.6.0/src/glrpt/callbacks.c:174:16: warning: implicit declaration of function ‘G_SOURCE_FUNC’; did you mean ‘G_STRFUNC’? [-Wimplicit-function-declaration] g_idle_add(G_SOURCE_FUNC(loadConfig), data); ^~~~~ G_STRFUNC /home/benji/glrpt-2.6.0/src/glrpt/callbacks.c:174:16: warning: passing argument 1 of ‘g_idle_add’ makes pointer from integer without a cast [-Wint-conversion] In file included from /usr/include/glib-2.0/glib/giochannel.h:33:0, from /usr/include/glib-2.0/glib.h:54, from /home/benji/glrpt-2.6.0/src/glrpt/callbacks.h:22, from /home/benji/glrpt-2.6.0/src/glrpt/callbacks.c:17: /usr/include/glib-2.0/glib/gmain.h:629:10: note: expected ‘GSourceFunc {aka int ()(void )}’ but argument is of type ‘int’ guint g_idle_add (GSourceFunc function, ^~~~~~ [ 63%] Building C object src/CMakeFiles/glrpt.dir/glrpt/clahe.c.o [ 66%] Building C object src/CMakeFiles/glrpt.dir/glrpt/callback_func.c.o /home/benji/glrpt-2.6.0/src/glrpt/callback_func.c: In function ‘Start_Receiver_Menuitem_Toggled’: /home/benji/glrpt-2.6.0/src/glrpt/callback_func.c:288:16: warning: implicit declaration of function ‘G_SOURCE_FUNC’; did you mean ‘G_STRFUNC’? [-Wimplicit-function-declaration] g_idle_add(G_SOURCE_FUNC(Demodulator_Run), NULL ); ^~~~~ G_STRFUNC /home/benji/glrpt-2.6.0/src/glrpt/callback_func.c:288:16: warning: passing argument 1 of ‘g_idle_add’ makes pointer from integer without a cast [-Wint-conversion] In file included from /usr/include/glib-2.0/glib/giochannel.h:33:0, from /usr/include/glib-2.0/glib.h:54, from /home/benji/glrpt-2.6.0/src/glrpt/callback_func.h:23, from /home/benji/glrpt-2.6.0/src/glrpt/callback_func.c:17: /usr/include/glib-2.0/glib/gmain.h:629:10: note: expected ‘GSourceFunc {aka int ()(void )}’ but argument is of type ‘int’ guint g_idle_add (GSourceFunc function, ^~~~~~ /home/benji/glrpt-2.6.0/src/glrpt/callback_func.c: In function ‘Alarm_Action’: /home/benji/glrpt-2.6.0/src/glrpt/callback_func.c:408:16: warning: passing argument 1 of ‘g_idle_add’ makes pointer from integer without a cast [-Wint-conversion] g_idle_add(G_SOURCE_FUNC(Demodulator_Run), NULL ); ^~~~~ In file included from /usr/include/glib-2.0/glib/giochannel.h:33:0, from /usr/include/glib-2.0/glib.h:54, from /home/benji/glrpt-2.6.0/src/glrpt/callback_func.h:23, from /home/benji/glrpt-2.6.0/src/glrpt/callback_func.c:17: /usr/include/glib-2.0/glib/gmain.h:629:10: note: expected ‘GSourceFunc {aka int ()(void )}’ but argument is of type ‘int’ guint g_idle_add (GSourceFunc function, ^~~~~~ [ 70%] Building C object src/CMakeFiles/glrpt.dir/glrpt/display.c.o [ 73%] Building C object src/CMakeFiles/glrpt.dir/glrpt/image.c.o [ 76%] Building C object src/CMakeFiles/glrpt.dir/glrpt/interface.c.o [ 80%] Building C object src/CMakeFiles/glrpt.dir/glrpt/main.c.o /home/benji/glrpt-2.6.0/src/glrpt/main.c: In function ‘main’: /home/benji/glrpt-2.6.0/src/glrpt/main.c:185:16: warning: implicit declaration of function ‘G_SOURCE_FUNC’; did you mean ‘G_STRFUNC’? [-Wimplicit-function-declaration] g_idle_add(G_SOURCE_FUNC(loadConfig), glrpt_cfg_list[0].path); ^~~~~ G_STRFUNC /home/benji/glrpt-2.6.0/src/glrpt/main.c:185:16: warning: passing argument 1 of ‘g_idle_add’ makes pointer from integer without a cast [-Wint-conversion] In file included from /usr/include/glib-2.0/glib/giochannel.h:33:0, from /usr/include/glib-2.0/glib.h:54, from /home/benji/glrpt-2.6.0/src/glrpt/../common/../glrpt/rc_config.h:24, from /home/benji/glrpt-2.6.0/src/glrpt/../common/shared.h:24, from /home/benji/glrpt-2.6.0/src/glrpt/main.c:17: /usr/include/glib-2.0/glib/gmain.h:629:10: note: expected ‘GSourceFunc {aka int ()(void )}’ but argument is of type ‘int’ guint g_idle_add (GSourceFunc function, ^~~~~~ [ 83%] Building C object src/CMakeFiles/glrpt.dir/glrpt/rc_config.c.o [ 86%] Building C object src/CMakeFiles/glrpt.dir/glrpt/utils.c.o [ 90%] Building C object src/CMakeFiles/glrpt.dir/sdr/filters.c.o [ 93%] Building C object src/CMakeFiles/glrpt.dir/sdr/ifft.c.o [ 96%] Building C object src/CMakeFiles/glrpt.dir/sdr/SoapySDR.c.o /home/benji/glrpt-2.6.0/src/sdr/SoapySDR.c: In function ‘SoapySDR_Activate_Stream’: /home/benji/glrpt-2.6.0/src/sdr/SoapySDR.c:670:13: warning: implicit declaration of function ‘pthread_create’; did you mean ‘timer_create’? [-Wimplicit-function-declaration] int ret = pthread_create( &pthread_id, NULL, SoapySDR_Stream, NULL ); ^~~~~~ timer_create [100%] Linking C executable glrpt CMakeFiles/glrpt.dir/glrpt/main.c.o: In function main': main.c:(.text.startup+0x4f0): undefined reference toG_SOURCE_FUNC' CMakeFiles/glrpt.dir/glrpt/callbacks.c.o: In function on_satellite_menuitem_activate': callbacks.c:(.text+0x1e8): undefined reference toG_SOURCE_FUNC' CMakeFiles/glrpt.dir/glrpt/callback_func.c.o: In function Start_Receiver_Menuitem_Toggled': callback_func.c:(.text+0x6b0): undefined reference toG_SOURCE_FUNC' CMakeFiles/glrpt.dir/glrpt/callback_func.c.o: In function Alarm_Action': callback_func.c:(.text+0xa34): undefined reference toG_SOURCE_FUNC' collect2: error: ld returned 1 exit status src/CMakeFiles/glrpt.dir/build.make:523: recipe for target 'src/glrpt' failed make[2]: [src/glrpt] Error 1 CMakeFiles/Makefile2:193: recipe for target 'src/CMakeFiles/glrpt.dir/all' failed make[1]: [src/CMakeFiles/glrpt.dir/all] Error 2 Makefile:148: recipe for target 'all' failed make: *** [all] Error 2 benji@benji-desktop:~/glrpt-2.6.0/build$

dvdesolve commented 3 years ago

It's distro-specific, but you can try the following patch before issuing make:

--- src/glrpt/main.c    2021-02-09 00:07:07.011830621 +0300
+++ src/glrpt/main.c    2021-02-09 00:10:03.078252300 +0300
@@ -173,18 +173,18 @@
     char ver[32];
     snprintf(ver, sizeof(ver), "Welcome to %s", PACKAGE_STRING);
     Show_Message(ver, "bold");

     /* Find configuration files and open the first as default */
-/*    g_idle_add(G_SOURCE_FUNC(Find_Config_Files), NULL);*/
+/*    g_idle_add(Find_Config_Files, NULL);*/
     /* TODO this will change in future when user-selectable configs arrive */
     if (!findConfigFiles()) {
         fprintf(stderr, "glrpt: %s\n", "can't find config files!");
         exit(-1);
     }

-    g_idle_add(G_SOURCE_FUNC(loadConfig), glrpt_cfg_list[0].path);
+    g_idle_add(loadConfig, glrpt_cfg_list[0].path);

     /* Main loop */
     gtk_main();

     return 0;
--- src/glrpt/callbacks.c   2021-02-09 00:07:07.011830621 +0300
+++ src/glrpt/callbacks.c   2021-02-09 00:10:23.511557123 +0300
@@ -169,11 +169,11 @@
 }

 /*****************************************************************************/

 void on_satellite_menuitem_activate(GtkMenuItem *menuitem, gpointer data) {
-    g_idle_add(G_SOURCE_FUNC(loadConfig), data);
+    g_idle_add(loadConfig, data);
 }

 /*****************************************************************************/

 void on_raw_menuitem_toggled(GtkCheckMenuItem *menuitem, gpointer data) {
--- src/glrpt/callback_func.c   2021-02-09 00:07:07.011830621 +0300
+++ src/glrpt/callback_func.c   2021-02-09 00:10:47.168190773 +0300
@@ -283,11 +283,11 @@
       return;
     }

     /* Start demodulator by idle callback */
     ClearFlag(STATUS_PENDING);
-    g_idle_add(G_SOURCE_FUNC(Demodulator_Run), NULL );
+    g_idle_add(Demodulator_Run, NULL );

     /* Display Device Driver in use */
     char mesg[MESG_SIZE];
     snprintf( mesg, sizeof(mesg),
         "Decoding from Device \"%s\"", rc_data.device_driver );
@@ -403,11 +403,11 @@
         "Decoding from %s Receiver", rc_data.device_driver );
     Show_Message( mesg, "black" );

     /* Start demodulator by idle callback */
     ClearFlag(STATUS_PENDING);
-    g_idle_add(G_SOURCE_FUNC(Demodulator_Run), NULL );
+    g_idle_add(Demodulator_Run, NULL );

     return;
   } /* if( isFlagSet(ALARM_ACTION_START) ) */

   /* Stop Receive/Decode Operation */

Save it as gsourcefunc.patch in the repo root and after cding there do the following:

patch -Np0 -i gsourcefunc.patch

After that re-issue make in your build folder