Hi, ich war jetzt schon länger nicht mehr hier aber ich habe jetzt auch schon länger nichts mehr mit Ubuntu gemacht aber jetzt ist es mal wieder soweit. Jetzt wollte ich mich auch wirklich einmal ein wenig tiefer arbeiten aber es geht jetzt nicht darum, sondern eher darum, dass ich gerade an einem kleinem Projekt arbeite und ich habe vorher auf einer VM gearbeitet aber jetzt habe ich auf meinem Laptop Ubuntu (Kubuntu) installiert und jetzt lassen sich leider die Tests nicht mehr kompilieren, die ich für mein Projekt geschrieben habe. Ich habe für jeden Test einen Ordner und ein makefile erstellt und ein zentrales makefile was über den Ordnern liegt, soll alle kompilieren und auf der VM hat das auch funktioniert, nur kann ich jetzt leider auf meinem Laptop nicht kompilieren. Das makefile eines Tests sieht so aus:
DEST = ../../Projekt/test/ CC = gcc CFLAGS = -g -Wall -D_GNU_SOURCE TARGET = test_000 .PHONY: default all clean default: $(TARGET) all: default OBJECTS = $(patsubst %.c, %.o, $(wildcard *.c) $(filter-out ../../Projekt/src/starter.c, $(wildcard ../../Projekt/src/*.c))) HEADERS = $(wildcard ../*.h) %.o: %.c $(HEADERS) $(CC) $(CFLAGS) -c $< -o $@ .PRECIOUS: $(TARGET) $(OBJECTS) $(TARGET): $(OBJECTS) $(CC) -pthread $(OBJECTS) -lrt -Wall -o $@ mv $(TARGET) $(DEST) clean: -rm -f *.o
und das Zentrale so:
SUBDIRS = $(wildcard */.) all: $(SUBDIRS) $(SUBDIRS): $(MAKE) -C $@ .PHONY: all $(SUBDIRS)
wenn ich das "zentrale" makefile dann verwende, dann kriege ich diese Meldung:
gcc -pthread test_00.o ../../Projekt/src/Utilities.o ../../Projekt/src/ProjektLib.o -lrt -Wall -o test_00 /usr/bin/ld: test_00.o: relocation R_X86_64_32 against `.rodata' can not be used when making a shared object; recompile with -fPIC /usr/bin/ld: final link failed: Nonrepresentable section on output collect2: error: ld returned 1 exit status
wieso kriege ich diesen Fehler jetzt auf einmal und wieso nicht schon auf der VM?
Bearbeitet von redknight:
Makefile ebenfalls in einen Codeblock gepackt.