Also im Grunde möchte ich wissen, warum meine ausführbare Datei libpthread als eine gemeinsame Bibliothek hat, während mein Code keine Threading-Funktionen verwendet. Es ist auch nicht im Makefile enthalten. Liegt es daran, dass GCC standardmäßig mit "--enable-threads = posix" kompiliert wird?Linux - Warum hat meine ausführbare Datei libpthread als eine gemeinsame Bibliothek?
Wenn ja, gibt es eine Möglichkeit, es aus meiner ausführbaren Datei zu entfernen? Wenn nicht, was ist das Problem?
LDD
linux-vdso.so.1 => (0x0000656150c5a000)
librt.so.1 => /lib64/librt.so.1 (0x0000656150a4c000)
libstdc++.so.6 => /usr/lib64/libstdc++.so.6 (0x0000656150746000)
libm.so.6 => /lib64/libm.so.6 (0x00006561504c1000)
libgcc_s.so.1 => /lib64/libgcc_s.so.1 (0x00006561502ab000)
libc.so.6 => /lib64/libc.so.6 (0x000065614ff17000)
libpthread.so.0 => /lib64/libpthread.so.0 (0x000065614fcf9000)
/lib64/ld-linux-x86-64.so.2 (0x0000656150c5b000)
Makefile
CC = gcc
OFLAGS = -O3
C++ = g++ -g
LFLAGS = -lrt
# API Exclusions
DFLAGS = -DNO_ZLIB -DNO_LOCALIZATION -DNO_INTERFACE
CFLAGS = $(OFLAGS) $(DFLAGS) -I. -I../rgapi/include/core/ -I../rgapi/include/public/
OBJS = (... list of .o files ...)
PROGS = ./rgs
all: $(OBJS) $(PROGS)
./rgs: $(OBJS)
$(C++) -o ./rgs $(OBJS) $(LFLAGS)
clean:
rm -f $(OBJS) $(PROGS)
$(OBJS): %.o: %.cpp
$(C++) -o [email protected] $(CFLAGS) -c $<
./rgs: $(OBJS)
Oh, wow, ernsthaft ... Ok, ich habe librt nicht überprüft, weil ich nicht gedacht habe, dass libpthread als Abhängigkeit verwendet wird. Okay ... Ich verbinde nur -lrt, weil die EXE die Zeit für Intervallaktualisierungen in der Hauptschleife mißt. Gibt es eine Alternative, wo ich Intervalle messen könnte? In der Regel im 50ms-Bereich für die Update-Schleife, ohne clock_gettime zu verwenden, und damit librt verlinken. Was ich gerade mache. –
'gettimeofday()' sollte für diesen Zweck ausreichend sein. –
Ich fragte mich, ob du auch wüsstest, ob ich mir Sorgen über Zeitaktualisierungen machen sollte - ich habe CLOCK_MONOTONIC immer benutzt, weil es in einem Spieleserver verwendet wird und ich nutze die Zeit sowohl für das Aktualisierungsintervall als auch um zu entscheiden, wann eine Verbindung abgelaufen ist aus. Selbst ein paar Sekundensprünge könnten sehr schlecht sein. Soll ich den NTP-Service deaktivieren oder muss ich mir deswegen keine Sorgen machen? –