Beispiel von libnova geht nicht

Heute ist Stammtischzeit:
Jeden Donnerstag 20:30 Uhr hier im Chat.
Wer Lust hat, kann sich gerne beteiligen. ;)
  • Ich habe mir libnova-0.14-0 installiert:

    Code
    apt-get install libnova-dev libnova-0.14-0


    Anschliessend habe ich noch libnovadocs runtergeladen und wollte gleich mal das Beispiel sun.c mit g++ sun.c compilieren:

    Spoiler anzeigen

    #include <stdio.h>
    #include <libnova/solar.h>
    #include <libnova/julian_day.h>
    #include <libnova/rise_set.h>
    #include <libnova/transform.h>
    static void print_date (char *title, struct ln_zonedate *date)
    {
    fprintf(stdout, "\n%s\n",title);
    fprintf(stdout, " Year : %d\n", date->years);
    fprintf(stdout, " Month : %d\n", date->months);
    fprintf(stdout, " Day : %d\n", date->days);
    fprintf(stdout, " Hours : %d\n", date->hours);
    fprintf(stdout, " Minutes : %d\n", date->minutes);
    fprintf(stdout, " Seconds : %f\n", date->seconds);
    }
    int main (int argc, const char *argv[])
    {
    struct ln_equ_posn equ;
    struct ln_rst_time rst;
    struct ln_zonedate rise, set, transit;
    struct ln_lnlat_posn observer;
    struct ln_helio_posn pos;
    double JD;

    /* observers location (Edinburgh), used to calc rst */
    observer.lat = 55.92; /* 55.92 N */
    observer.lng = -3.18; /* 3.18 W */

    /* get Julian day from local time */
    JD = ln_get_julian_from_sys();
    fprintf(stdout, "JD %f\n", JD);

    /* geometric coordinates */
    ln_get_solar_geom_coords(JD, &pos);
    fprintf(stdout, "Solar Coords longitude (deg) %f\n", pos.L);
    fprintf(stdout, " latitude (deg) %f\n", pos.B);
    fprintf(stdout, " radius vector (AU) %f\n", pos.R);

    /* ra, dec */
    ln_get_solar_equ_coords(JD, &equ);
    fprintf(stdout, "Solar Position RA %f\n", equ.ra);
    fprintf(stdout, " DEC %f\n", equ.dec);

    /* rise, set and transit */
    if (ln_get_solar_rst(JD, &observer, &rst) != 0)
    fprintf(stdout, "Sun is circumpolar\n");
    else {
    ln_get_local_date(rst.rise, &rise);
    ln_get_local_date(rst.transit, &transit);
    ln_get_local_date(rst.set, &set);
    print_date("Rise", &rise);
    print_date("Transit", &transit);
    print_date("Set", &set);
    }

    return 0;
    }


    Leider bekomme ich Fehlermeldungen:


    Kann das mal einer deuten, was da schief läuft ?
    :helpnew:

    Edit: Gelöst, man muss nur mit der Option -lnova compilieren:

    Code
    g++ -lnova sun.c


    Die deprecated-Warnung ignoriere ich mal ;)

  • Zitat von &quot;fred0815&quot; pid='293552' dateline='1501578096'


    Die deprecated-Warnung ignoriere ich mal ;)

    BTW: Mit

    Code
    gcc -s -o sun sun.c -lnova


    gibt es keine Warnung.

    The most popular websites without IPv6 in Germany.  IPv6-Ausreden

    Meine PIs

    PI4B/8GB (border device) OpenBSD 7.4 (64bit): SSH-Server, WireGuard-Server, ircd-hybrid-Server, stunnel-Proxy, Mumble-Server

    PI3B+ FreeBSD 14.0-R-p3 (arm64): SSH-Serv., WireGuard-Serv., ircd-hybrid-Serv., stunnel-Proxy, Mumble-Serv., ddclient

    PI4B/4GB Bullseye-lite (64bit; modifiziert): SSH-Server, WireGuard-Server, ircd-hybrid-Server, stunnel-Proxy, Mumble-Server, botamusique, ample

  • Wie genau sieht denn dein Befehl zum kompilieren aus?

    Versuchs mal damit:

    Code
    gcc -lnova sun.c -o sun 
    ./sun

    //EDIT: Mist, zu langsam... =(
    Aber IMHO ist g++ falsch

  • Zitat von &quot;fred0815&quot; pid='293560' dateline='1501580760'


    C++ und C, aha, kapiert. :thumbs1:

    Die Warnungen mit g++ (... wenn Du damit bzw. hier in diesem Fall, c-code compilierst/etc.) kannst Du auch abschalten:

    Code
    g++ -w -s -o sun sun.c -lnova


    ... aber siehe die Abhängigkeiten des binary, compiliert mit g++ im Vergleich zu dem compiliert mit gcc bzw. auch die Größe der binaries:

    Code
    :~ $ ldd ./sun
    linux-vdso.so.1 (0x7ef8d000)
    libnova-0.14.so.0 => /usr/lib/arm-linux-gnueabihf/libnova-0.14.so.0 (0x76c05000)
    libstdc++.so.6 => /usr/lib/arm-linux-gnueabihf/libstdc++.so.6 (0x76b29000)
    libm.so.6 => /lib/arm-linux-gnueabihf/libm.so.6 (0x76aae000)
    libgcc_s.so.1 => /lib/arm-linux-gnueabihf/libgcc_s.so.1 (0x76a81000)
    libc.so.6 => /lib/arm-linux-gnueabihf/libc.so.6 (0x76940000)
    /lib/ld-linux-armhf.so.3 (0x76f8b000)
    Code
    :~ $ ldd ./sun
    linux-vdso.so.1 (0x7ea06000)
    libnova-0.14.so.0 => /usr/lib/arm-linux-gnueabihf/libnova-0.14.so.0 (0x76b72000)
    libc.so.6 => /lib/arm-linux-gnueabihf/libc.so.6 (0x76a31000)
    libm.so.6 => /lib/arm-linux-gnueabihf/libm.so.6 (0x769b6000)
    /lib/ld-linux-armhf.so.3 (0x76ef8000)

    The most popular websites without IPv6 in Germany.  IPv6-Ausreden

    Meine PIs

    PI4B/8GB (border device) OpenBSD 7.4 (64bit): SSH-Server, WireGuard-Server, ircd-hybrid-Server, stunnel-Proxy, Mumble-Server

    PI3B+ FreeBSD 14.0-R-p3 (arm64): SSH-Serv., WireGuard-Serv., ircd-hybrid-Serv., stunnel-Proxy, Mumble-Serv., ddclient

    PI4B/4GB Bullseye-lite (64bit; modifiziert): SSH-Server, WireGuard-Server, ircd-hybrid-Server, stunnel-Proxy, Mumble-Server, botamusique, ample

    Einmal editiert, zuletzt von rpi444 (1. August 2017 um 11:55)

Jetzt mitmachen!

Du hast noch kein Benutzerkonto auf unserer Seite? Registriere dich kostenlos und nimm an unserer Community teil!