C Kompilierung unter Linux
-
Guten Tag Leute,
Ich hätte eine Frage zum Linken von Dateien unter Linux (Fedora17).
Und zwar will ich eine Methode außerhalb einer Source-Datei verwenden,
doch nach einem "$ make" und einem "$ gcc -o main main.c" im Terminal
sagt mir der Compiler "undefined reference to 'print3'".
Hier mal der Code der beiden Dateien://syscalls.c #include <stdint.h> #include <stddef.h> /* for NULL */ #include <inttypes.h> #include "syscalls.h" #include <stdio.h> void print3( char a, uint8_t b, int8_t c ) { printf( "%c %" PRIu8 " %" PRId8 "\n", a, b, c ); } //main.c #include "syscalls.h" #include <stdio.h> #include <stdint.h> #include <inttypes.h> void print3( char a, uint8_t b, int8_t c ); int main() { char a = 'a'; uint8_t b = -14; int8_t c = 17; print3(a, b, c); return 0; }
Und die Header-Datei von sysscalls.c wenn nötig:
#ifndef SYSCALLS_H #define SYSCALLS_H #include <stdint.h> void print3( char a, uint8_t b, int8_t c ); #endif
Wäre nett wenn mir jemand verraten würde wieso der Compiler der main() nicht
erlaubt print3 auszuführen.
MfG
-
gcc -o main main.c syscalls.c
-
Ich hab zwar keine Ahnung von Linux, aber ich sehe nicht, wo Du die syscalls dazulinkst?!
Probier doch mal:
"$ gcc -o main main.c syscalls.c"
-
Oh gut es funktioniert, vielen Dank.
PS: syscalls hieß die Datei, weil noch andere Methoden drin sind in denen dann syscalls verwendet werden, die ich aber noch nicht bearbeitet habe.