Ich kann nicht kompillieren unter OpenSuse:(
-
Hallo Liebe Leute,
als ich versucht habe unter opensuse zu kopillieren habe ich folgende Fehlermeldung erhalten:
/usr/lib64/gcc/x86_64-suse-linux/4.5/../../../../lib64/crt1.o: In function `_start': /usr/src/packages/BUILD/glibc-2.11.2/csu/../sysdeps/x86_64/elf/start.S:109: undefined reference to `main' collect2: ld gab 1 als Ende-Status zurück
kann mir vllt jemand sagen womit das Problem zu tun hat?
Also HelloWorld etc funktioniert, nur bei einem anderem Programm erscheint immer diese Fehlermeldung.Bitte um Hilfe
-
Zeig bitte Deinen Code und Deinen Compiler-Aufruf.
-
Du hast vergessen, die main()-Funktion zu schreiben.
-
und zwar habe ich diesen code mit embaddet matlab erzeugt:
/* * beispiel.c * * Embedded MATLAB Coder code generation for M-function 'beispiel' * * C source code generated on: Wed Sep 01 12:28:52 2010 * */ /* Include files */ #include "rt_nonfinite.h" #include "beispiel.h" /* Type Definitions */ /* Named Constants */ /* Variable Declarations */ /* Variable Definitions */ /* Function Declarations */ /* Function Definitions */ void beispiel(real_T eml_a, const real_T eml_b[3], const real_T eml_c[9]) { } /* End of Embedded MATLAB Coder code generation (beispiel.c) */
wie erzeuge ich denn die main() funktion
-
/* * beispiel.h * * Embedded MATLAB Coder code generation for M-function 'beispiel' * * C source code generated on: Wed Sep 01 12:28:52 2010 * */ #ifndef __BEISPIEL_H__ #define __BEISPIEL_H__ /* Include files */ #include <math.h> #include <stdlib.h> #include <string.h> #include "rtwtypes.h" #include "beispiel_types.h" /* Type Definitions */ /* Named Constants */ /* Variable Declarations */ /* Variable Definitions */ /* Function Declarations */ extern void beispiel(real_T eml_a, const real_T eml_b[3], const real_T eml_c[9]); #endif /* End of Embedded MATLAB Coder code generation (beispiel.h) */
/* * rt_nonfinite.h * * Embedded MATLAB Coder code generation for M-function 'beispiel' * * C source code generated on: Wed Sep 01 12:28:52 2010 * */ #ifndef __RT_NONFINITE_H__ #define __RT_NONFINITE_H__ #if defined(_MSC_VER) && (_MSC_VER <= 1200) #include <float.h> #endif #include <stddef.h> #include "rtwtypes.h" extern real_T rtInf; extern real_T rtMinusInf; extern real_T rtNaN; extern real32_T rtInfF; extern real32_T rtMinusInfF; extern real32_T rtNaNF; extern void rt_InitInfAndNaN(size_t realSize); extern boolean_T rtIsInf(real_T value); extern boolean_T rtIsInfF(real32_T value); extern boolean_T rtIsNaN(real_T value); extern boolean_T rtIsNaNF(real32_T value); #endif /* End of Embedded MATLAB Coder code generation (rt_nonfinite.h) */
-
Kann es sein, dass Matlab eine Bibliothek und kein Programm braucht? Dann solltest du auch nicht versuchen, ein Programm, sondern eine Bibliothek zu kompilieren...
Willst du jetzt Matlab in dein Programm einbetten, oder willst du eine Funktion schreiben, die in Matlab zur Verfügung steht?
-
Also ich wollte eine Matlab Funktion (.m) in .c umwandeln und dies dann über die Konsole abrufen können, also kompilieren.
Die Umwandlung von .m zu .c erfolgt über eine Toolbox von Matlab (Embedded lMatlab). Ich bekomme dann aber viele .h mit ausgegeben die der egtl. mnatlab-funktion als include-file dienen.
nun kriege ich aber irgendwie diese fehlermeldung.
-
AmateurSuse schrieb:
Also ich wollte eine Matlab Funktion (.m) in .c umwandeln und dies dann über die Konsole abrufen können, also kompilieren.
Die Umwandlung von .m zu .c erfolgt über eine Toolbox von Matlab (Embedded lMatlab). Ich bekomme dann aber viele .h mit ausgegeben die der egtl. mnatlab-funktion als include-file dienen.
nun kriege ich aber irgendwie diese fehlermeldung.Wie hier schon erwähnt, musst du eine
main
-Funktion schreiben, die die generierte Funktion aufruft. Wie das geht, erfährst du vermutlich in so ziemlich jedem Buch über C in den ersten 10 Seiten.
-
Ponto hat schon gesagt, was dein Problem ist:
Ponto schrieb:
Du hast vergessen, die main()-Funktion zu schreiben.
Matlab spuckt dir offenbar nur die Funktion und kein komplett fertiges Programm aus.
(Falls du nicht weißt, was die main()-Funktion ist, solltest du dir ein Buch über C besorgen).
-
Achso:) schön zu wissen, dass man so etwas braucht, bin egtl ein neuling was programmieren angeht:)
ich danke euch vielmals für eure hinweise.eine frage hätte ich noch? muss ich dann die main funktion mit dem compiler aufrufen? und ist meine generierte funktion als include angeben?
-
Du solltest Dir wirklich irgendein Buch zu den Grundlagen von C holen. Matlab spuckt Dir eine Funktion aus, die Du in einem C-Programm aufrufen kannst.
Das C-Programm braucht natürlich eine main-Funktion und das Programm kompilierst Du dann. Die Binary, die Dir der Compiler ausspuckst, kannst Du aufrufen.