Anzeige:
Ergebnis 1 bis 11 von 11

Thema: wie funktioniert configure?

  1. #1
    Registrierter Benutzer
    Registriert seit
    Dec 2021
    Beiträge
    8

    wie funktioniert configure?

    Hallo Leute,

    ich habe bisher unter Win10 programmiert. Nun will ich es auch unter Linux versuchen. Wenn ich eine C++ App mit make erstellen will,
    muß ich wohl zuvor configure aufrufen, damit das makefile erstellt wird.
    Aber welche Parameter geb ich dem configure mit? Gibt es hierzu eine Spezifikation?
    Danke schonmal für die zahlreichen Antworten

  2. #2
    Registrierter Benutzer
    Registriert seit
    Apr 2009
    Ort
    Erde
    Beiträge
    2.814
    https://thoughtbot.com/blog/the-magi...e-make-install

    idR wird aber beim Projekt erklärt, was genau man mit configure alles einstellen kannn - Beispiel: https://www.postgresql.org/docs/curr...procedure.html
    Gruß nopes
    (,,,)---(^.^)---(,,,) /var/log/messages | grep cat

  3. #3
    Fieses Frettchen Avatar von DrunkenFreak
    Registriert seit
    Dec 2003
    Beiträge
    3.315
    Wenn du selbst programmieren willst, entscheidest du auch selbst über die Parameter. In der Regel legst du damit die Funktionen fest, die dein Programm können soll. Wenn du der Meinung bist, es soll immer in der höchsten Ausbaustufe verteilt werden, kannst du dir das sparen und einfach nur das Makefile mitgeben.

  4. #4
    Registrierter Benutzer
    Registriert seit
    Dec 2021
    Beiträge
    8
    Vielen Dank für die schnellen Antworten. Der erste Link scheint mir für Anfänger nachvollziehbar.
    In einer ruhigen Stunde werde ich das mal ausprobieren. Macht Euch schon mal auf Fragen gefasst

  5. #5
    Registrierter Benutzer
    Registriert seit
    Dec 2021
    Beiträge
    8
    Ich bin laut Anleitung vorgegangen:
    Zuerst habe ich die Dateien main.c, configure.ac und makefile.am mit den Inhalten wie beschrieben erstellt.

    Zum Aufruf von aclocal mußte ich automake installieren: sudo apt install automake1.11

    Beim Aufruf von autoconf kam leider folgender Fehler:
    configure.ac:4: error: AC_SUBST: `' is not a valid shell variable name
    ../../lib/autoconf/programs.m4:155: AC_PATH_PROG is expanded from...
    configure.ac:4: the top level
    autom4te: /usr/bin/m4 failed with exit status: 1

    Das erstaunt mich, denn die Variable AC_SUBST kommt in meinen Dateien gar nicht vor.
    Hat jemand einen Vorschlag, wie ich weiterkomme oder wo ich einen Hinweis finden kann?

  6. #6
    Registrierter Benutzer
    Registriert seit
    Dec 2003
    Ort
    Dettenhausen
    Beiträge
    22.054
    er meckert ja auch
    Code:
    `' is not a valid shell variable name
    - wenn ich das richtig interpretiere.

    Wichtig: Immer alle relevanten Infos posten, so daß sie auch 100% valide sind - sprich
    * komplette Eingabe
    * komplette Ausgabe
    * relevante Dateien posten - hier vermutlich die configure.ac
    * [code]-Tags verwenden - für die Lesbarkeit, gerade bei Shell-Ausgaben

    ... ansonsten können wir nur raten und das ist meist nicht bis wenig zielführend und effizient.
    Ich bin root - ich darf das.

  7. #7
    Registrierter Benutzer
    Registriert seit
    Apr 2009
    Ort
    Erde
    Beiträge
    2.814
    Denke auch, dass das daran liegt, bitte ggf. Zeile 4 von configure.ac zeigen, oder alles - der Hinweis mit den code Tags kam ja schon.
    Gruß nopes
    (,,,)---(^.^)---(,,,) /var/log/messages | grep cat

  8. #8
    Registrierter Benutzer
    Registriert seit
    Dec 2021
    Beiträge
    8
    Das ist richtig. Ich werde mich bessern.

    Das sind die 3 Dateien:
    Code:
    manfred@manfred-mint:~/Dropbox/Daten/Linux/autotools_test$ ls
    configure.ac  main.c  makefile.am
    manfred@manfred-mint:~/Dropbox/Daten/Linux/autotools_test$
    und der Inhalt von configure.ac:
    Code:
    manfred@manfred-mint:~/Dropbox/Daten/Linux/autotools_test$ cat configure.ac
    AC_INIT([helloworld], [0.1])
    AM_INIT_AUTOMAKE
    AC_PROG_CC
    AC_PATH_PROG
    AC_CONFIG_FILES([Makefile])		
    AC_OUTPUT
    manfred@manfred-mint:~/Dropbox/Daten/Linux/autotools_test$
    beim Start von aclocal gibt es schon eine Fehlermeldung:
    Code:
    manfred@manfred-mint:~/Dropbox/Daten/Linux/autotools_test$ aclocal
    configure.ac:4: error: AC_SUBST: `' is not a valid shell variable name
    ../../lib/autoconf/programs.m4:155: AC_PATH_PROG is expanded from...
    configure.ac:4: the top level
    autom4te: /usr/bin/m4 failed with exit status: 1
    aclocal: error: echo failed with exit status: 1
    manfred@manfred-mint:~/Dropbox/Daten/Linux/autotools_test$
    trotz Fehler wird ein neues Verzeichnis erstellt:
    Code:
    manfred@manfred-mint:~/Dropbox/Daten/Linux/autotools_test$ ls
    autom4te.cache  configure.ac  main.c  makefile.am
    manfred@manfred-mint:~/Dropbox/Daten/Linux/autotools_test$ ls autom4te.cache/
    output.0t  requests  traces.0t
    manfred@manfred-mint:~/Dropbox/Daten/Linux/autotools_test$
    autoconf liefert diesen Fehler:
    Code:
    manfred@manfred-mint:~/Dropbox/Daten/Linux/autotools_test$ autoconf
    configure.ac:4: error: AC_SUBST: `' is not a valid shell variable name
    ../../lib/autoconf/programs.m4:155: AC_PATH_PROG is expanded from...
    configure.ac:4: the top level
    autom4te: /usr/bin/m4 failed with exit status: 1
    manfred@manfred-mint:~/Dropbox/Daten/Linux/autotools_test$
    Wenn man sehen könnte, was beim Aufruf von aclocal alles abläuft, könnte man genauer
    nachsehen.
    Mint 20.2 Cinnamon 5.0 64bit

  9. #9
    Registrierter Benutzer
    Registriert seit
    Dec 2021
    Beiträge
    8
    Auf der Seite
    https://www.gnu.org/software/autoconf/
    ist ein Hinweis auf die Enviroment-Variable AUTOMATION
    Diese fehlt bei mir. Kann das die Ursache sein?
    Welchen Wert hat sie?
    Mint 20.2 Cinnamon 5.0 64bit

  10. #10
    Registrierter Benutzer
    Registriert seit
    Apr 2009
    Ort
    Erde
    Beiträge
    2.814
    [edit]Nein, es wird eher nicht an Umgebungsvariablen liegen. Ein Fehler ist, dass makefile.am nicht Makefile.am heißt, Linux achtet auf die Schreibweise. Ein weiterer Fehler - deswegen hängt es bei dir, ist der Inhalt von configure.ac, geh die mal Zeile für Zeile durch und check nochmal, was du mit der Zeile bewirken willst bzw warum du sie hin geschrieben hast.






    Inzwischen habe ich das auch mal selber probiert, flutscht alles noch wie beschrieben:
    Code:
    pi@dev-pizero:~/develop/hello $ ls -la
    total 20
    drwxr-xr-x  2 pi pi 4096 Dec 17 18:52 .
    drwxr-xr-x 11 pi pi 4096 Dec 17 12:53 ..
    -rw-r--r--  1 pi pi  113 Dec 17 13:00 configure.ac
    -rw-r--r--  1 pi pi  179 Dec 17 12:59 main.c
    -rw-r--r--  1 pi pi   71 Dec 17 13:03 Makefile.am
    pi@dev-pizero:~/develop/hello $ aclocal
    pi@dev-pizero:~/develop/hello $ ls -la
    total 68
    drwxr-xr-x  3 pi pi  4096 Dec 17 18:53 .
    drwxr-xr-x 11 pi pi  4096 Dec 17 12:53 ..
    -rw-r--r--  1 pi pi 41888 Dec 17 18:53 aclocal.m4
    drwxr-xr-x  2 pi pi  4096 Dec 17 18:53 autom4te.cache
    -rw-r--r--  1 pi pi   113 Dec 17 13:00 configure.ac
    -rw-r--r--  1 pi pi   179 Dec 17 12:59 main.c
    -rw-r--r--  1 pi pi    71 Dec 17 13:03 Makefile.am
    pi@dev-pizero:~/develop/hello $ autoconf
    pi@dev-pizero:~/develop/hello $ ls -la
    total 208
    drwxr-xr-x  3 pi pi   4096 Dec 17 18:53 .
    drwxr-xr-x 11 pi pi   4096 Dec 17 12:53 ..
    -rw-r--r--  1 pi pi  41888 Dec 17 18:53 aclocal.m4
    drwxr-xr-x  2 pi pi   4096 Dec 17 18:53 autom4te.cache
    -rwxr-xr-x  1 pi pi 141628 Dec 17 18:53 configure
    -rw-r--r--  1 pi pi    113 Dec 17 13:00 configure.ac
    -rw-r--r--  1 pi pi    179 Dec 17 12:59 main.c
    -rw-r--r--  1 pi pi     71 Dec 17 13:03 Makefile.am
    pi@dev-pizero:~/develop/hello $ automake --add-missing
    configure.ac:3: installing './compile'
    configure.ac:2: installing './install-sh'
    configure.ac:2: installing './missing'
    Makefile.am: installing './depcomp'
    pi@dev-pizero:~/develop/hello $ ls -la
    total 232
    drwxr-xr-x  3 pi pi   4096 Dec 17 18:54 .
    drwxr-xr-x 11 pi pi   4096 Dec 17 12:53 ..
    -rw-r--r--  1 pi pi  41888 Dec 17 18:53 aclocal.m4
    drwxr-xr-x  2 pi pi   4096 Dec 17 18:54 autom4te.cache
    lrwxrwxrwx  1 pi pi     32 Dec 17 18:54 compile -> /usr/share/automake-1.16/compile
    -rwxr-xr-x  1 pi pi 141628 Dec 17 18:53 configure
    -rw-r--r--  1 pi pi    113 Dec 17 13:00 configure.ac
    lrwxrwxrwx  1 pi pi     32 Dec 17 18:54 depcomp -> /usr/share/automake-1.16/depcomp
    lrwxrwxrwx  1 pi pi     35 Dec 17 18:54 install-sh -> /usr/share/automake-1.16/install-sh
    -rw-r--r--  1 pi pi    179 Dec 17 12:59 main.c
    -rw-r--r--  1 pi pi     71 Dec 17 13:03 Makefile.am
    -rw-r--r--  1 pi pi  23641 Dec 17 18:54 Makefile.in
    lrwxrwxrwx  1 pi pi     32 Dec 17 18:54 missing -> /usr/share/automake-1.16/missing
    pi@dev-pizero:~/develop/hello $ ./configure
    checking for a BSD-compatible install... /usr/bin/install -c
    checking whether build environment is sane... yes
    checking for a thread-safe mkdir -p... /usr/bin/mkdir -p
    checking for gawk... no
    checking for mawk... mawk
    checking whether make sets $(MAKE)... yes
    checking whether make supports nested variables... yes
    checking for gcc... gcc
    checking whether the C compiler works... yes
    checking for C compiler default output file name... a.out
    checking for suffix of executables...
    checking whether we are cross compiling... no
    checking for suffix of object files... o
    checking whether we are using the GNU C compiler... yes
    checking whether gcc accepts -g... yes
    checking for gcc option to accept ISO C89... none needed
    checking whether gcc understands -c and -o together... yes
    checking whether make supports the include directive... yes (GNU style)
    checking dependency style of gcc... gcc3
    checking that generated files are newer than configure... done
    configure: creating ./config.status
    config.status: creating Makefile
    config.status: executing depfiles commands
    pi@dev-pizero:~/develop/hello $ ls -la
    total 304
    drwxr-xr-x  4 pi pi   4096 Dec 17 18:55 .
    drwxr-xr-x 11 pi pi   4096 Dec 17 12:53 ..
    -rw-r--r--  1 pi pi  41888 Dec 17 18:53 aclocal.m4
    drwxr-xr-x  2 pi pi   4096 Dec 17 18:54 autom4te.cache
    lrwxrwxrwx  1 pi pi     32 Dec 17 18:54 compile -> /usr/share/automake-1.16/compile
    -rw-r--r--  1 pi pi   9460 Dec 17 18:55 config.log
    -rwxr-xr-x  1 pi pi  28923 Dec 17 18:55 config.status
    -rwxr-xr-x  1 pi pi 141628 Dec 17 18:53 configure
    -rw-r--r--  1 pi pi    113 Dec 17 13:00 configure.ac
    lrwxrwxrwx  1 pi pi     32 Dec 17 18:54 depcomp -> /usr/share/automake-1.16/depcomp
    drwxr-xr-x  2 pi pi   4096 Dec 17 18:55 .deps
    lrwxrwxrwx  1 pi pi     35 Dec 17 18:54 install-sh -> /usr/share/automake-1.16/install-sh
    -rw-r--r--  1 pi pi    179 Dec 17 12:59 main.c
    -rw-r--r--  1 pi pi  23538 Dec 17 18:55 Makefile
    -rw-r--r--  1 pi pi     71 Dec 17 13:03 Makefile.am
    -rw-r--r--  1 pi pi  23641 Dec 17 18:54 Makefile.in
    lrwxrwxrwx  1 pi pi     32 Dec 17 18:54 missing -> /usr/share/automake-1.16/missing
    pi@dev-pizero:~/develop/hello $ make
    gcc -DPACKAGE_NAME=\"hello\" -DPACKAGE_TARNAME=\"hello\" -DPACKAGE_VERSION=\"0.1\" -DPACKAGE_STRING=\"hello\ 0.1\" -DPACKAGE_BUGREPORT=\"nopes@linuxforen.de\" -DPACKAGE_URL=\"\" -DPACKAGE=\"hello\" -DVERSION=\"0.1\" -I.     -g -O2 -MT main.o -MD -MP -MF .deps/main.Tpo -c -o main.o main.c
    mv -f .deps/main.Tpo .deps/main.Po
    gcc  -g -O2   -o hello main.o
    pi@dev-pizero:~/develop/hello $ ls -la
    total 324
    drwxr-xr-x  4 pi pi   4096 Dec 17 18:55 .
    drwxr-xr-x 11 pi pi   4096 Dec 17 12:53 ..
    -rw-r--r--  1 pi pi  41888 Dec 17 18:53 aclocal.m4
    drwxr-xr-x  2 pi pi   4096 Dec 17 18:54 autom4te.cache
    lrwxrwxrwx  1 pi pi     32 Dec 17 18:54 compile -> /usr/share/automake-1.16/compile
    -rw-r--r--  1 pi pi   9460 Dec 17 18:55 config.log
    -rwxr-xr-x  1 pi pi  28923 Dec 17 18:55 config.status
    -rwxr-xr-x  1 pi pi 141628 Dec 17 18:53 configure
    -rw-r--r--  1 pi pi    113 Dec 17 13:00 configure.ac
    lrwxrwxrwx  1 pi pi     32 Dec 17 18:54 depcomp -> /usr/share/automake-1.16/depcomp
    drwxr-xr-x  2 pi pi   4096 Dec 17 18:55 .deps
    -rwxr-xr-x  1 pi pi  10900 Dec 17 18:55 hello
    lrwxrwxrwx  1 pi pi     35 Dec 17 18:54 install-sh -> /usr/share/automake-1.16/install-sh
    -rw-r--r--  1 pi pi    179 Dec 17 12:59 main.c
    -rw-r--r--  1 pi pi   5180 Dec 17 18:55 main.o
    -rw-r--r--  1 pi pi  23538 Dec 17 18:55 Makefile
    -rw-r--r--  1 pi pi     71 Dec 17 13:03 Makefile.am
    -rw-r--r--  1 pi pi  23641 Dec 17 18:54 Makefile.in
    lrwxrwxrwx  1 pi pi     32 Dec 17 18:54 missing -> /usr/share/automake-1.16/missing
    pi@dev-pizero:~/develop/hello $ ./hello linuxforen
    Hello linuxforen
    pi@dev-pizero:~/develop/hello $ cat main.c
    #include <stdio.h>
    
    int main(int argc, char* argv[])
    {
            int r = 0;
            switch(argc)
            {
            case 2:
                    printf("Hello %s\n", argv[1]);
                    break;
            default:
                    r = 1;
                    break;
            }
            return r;
    }
    pi@dev-pizero:~/develop/hello $ cat configure.ac
    AC_INIT([hello], [0.1], [nopes@linuxforen.de])
    AM_INIT_AUTOMAKE
    AC_PROG_CC
    AC_CONFIG_FILES([Makefile])
    AC_OUTPUT
    pi@dev-pizero:~/develop/hello $ cat Makefile.am
    AUTOMAKE_OPTIONS = foreign
    bin_PROGRAMS = hello
    hello_SOURCES = main.c
    pi@dev-pizero:~/develop/hello $
    Geändert von nopes (17.12.21 um 19:19 Uhr) Grund: Frage beantwortet; "syntax highlighting"
    Gruß nopes
    (,,,)---(^.^)---(,,,) /var/log/messages | grep cat

  11. #11
    Registrierter Benutzer
    Registriert seit
    Dec 2021
    Beiträge
    8
    Jetzt gehts!!!

    Die Vermutung, daß es an der Datei configure.ac liegt, ist richtig.
    Und auch die Schreibweise von Makefile war falsch

    Mit diesem Inhalt funktioniert alles:
    Code:
    AC_INIT([helloworld], [0.1])
    AC_CONFIG_SRCDIR([main.c])
    AM_INIT_AUTOMAKE
    AC_PROG_CC
    AC_CONFIG_FILES([Makefile])		
    AC_OUTPUT
    Die zweite Zeile habe ich herausgefunden, indem ich autoscan laufen ließ.
    Vielen Dank für Eure Hilfe.
    Mint 20.2 Cinnamon 5.0 64bit

Ähnliche Themen

  1. ./configure funktioniert nicht
    Von phoenix2307 im Forum Kompilieren von Kernel und Sourcen
    Antworten: 14
    Letzter Beitrag: 02.05.07, 17:17
  2. wegen: "C compiler cannot create executables" Wie funktioniert configure/make/install
    Von BetterWorld im Forum Kompilieren von Kernel und Sourcen
    Antworten: 5
    Letzter Beitrag: 03.02.05, 12:30
  3. Antworten: 2
    Letzter Beitrag: 06.12.02, 20:16
  4. ./configure funktioniert nicht
    Von im Forum Kompilieren von Kernel und Sourcen
    Antworten: 3
    Letzter Beitrag: 20.05.00, 19:05
  5. /.configure funktioniert nicht richtig
    Von Catonga im Forum Linux Allgemein
    Antworten: 4
    Letzter Beitrag: 09.11.99, 08:37

Stichworte

Lesezeichen

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •