Die Verknüpfung schlägt fehl mit: in Funktion „main.cold“: undefinierter Verweis auf „__cxa_call_terminate“C++

Programme in C++. Entwicklerforum
Anonymous
 Die Verknüpfung schlägt fehl mit: in Funktion „main.cold“: undefinierter Verweis auf „__cxa_call_terminate“

Post by Anonymous »

Ich versuche, mit CMake ein Programm zu erstellen, das C++- und CUDA-C++-Code enthält. Früher wurde vor einigen Monaten eine Datei erstellt, aber jetzt erhalte ich einen Linker-Fehler, mit dem ich nicht vertraut bin:

Code: Select all

in function `main.cold': ... undefined reference to `__cxa_call_terminate'`
Ich hänge den vollständigen Linkbefehl und die Ausgabe unten an. Natürlich enthält mein Programm keine solche Funktion; und sein Präfix mit doppeltem Unterstrich deutet darauf hin, dass es sich um eine interne Komponente der Standardbibliothek oder sogar des Compilers handelt. Warum wird dieses Symbol einerseits in meinem Programm verwendet und ist andererseits nicht verfügbar? Und wie kann ich mein Programm verknüpfen und ausführen lassen?
Hinweise:
  • Die Distribution ist Devuan Excalibur GNU/Linux.
  • CUDA-Version ist 12.8 (veröffentlicht am 3. März 2025; nvcc 12.8.93)
  • Mein Standard-System-Compiler ist GCC 14, aber der Die CMake-Toolchain verwendet aus bestimmten Gründen g++-13 für die C++-Kompilierung.
  • CMake Version 4.0.2
Die Befehlszeile:

Code: Select all

/usr/bin/c++ -O3 -DNDEBUG \
-Wl,--dependency-file=examples/CMakeFiles/jacobiCudaGraphs.dir/link.d \
examples/CMakeFiles/jacobiCudaGraphs.dir/modified_cuda_samples/jacobiCudaGraphs/main.cpp.o \
examples/CMakeFiles/jacobiCudaGraphs.dir/modified_cuda_samples/jacobiCudaGraphs/jacobi.cu.o \
-o examples/bin/jacobiCudaGraphs \
-L/usr/local/cuda-12.8/targets/x86_64-linux/lib/stubs \
-L/usr/local/cuda-12.8/targets/x86_64-linux/lib  \
-L/usr/lib/gcc/x86_64-linux-gnu/13 -Wl,-rpath,/usr/local/cuda-12.8/lib64  \
/usr/local/cuda-12.8/targets/x86_64-linux/lib/stubs/libcuda.so \
/usr/local/cuda-12.8/lib64/libcudart.so \
/usr/lib/x86_64-linux-gnu/librt.a \
-ldl  -lm  -lrt \
/usr/local/cuda-12.8.1/targets/x86_64-linux/lib/libcufilt.a \
-lcudadevrt  -lcudart_static  -lrt  -lpthread  -ldl
gibt die folgenden Fehler aus:

Code: Select all

/usr/bin/ld: examples/CMakeFiles/jacobiCudaGraphs.dir/modified_cuda_samples/jacobiCudaGraphs/main.cpp.o: in function `main.cold':
main.cpp:(.text.unlikely+0x119f): undefined reference to `__cxa_call_terminate'
/usr/bin/ld: main.cpp:(.text.unlikely+0x1653): undefined reference to `__cxa_call_terminate'
/usr/bin/ld: main.cpp:(.text.unlikely+0x1882): undefined reference to `__cxa_call_terminate'
/usr/bin/ld: main.cpp:(.text.unlikely+0x197d): undefined reference to `__cxa_call_terminate'
/usr/bin/ld: main.cpp:(.text.unlikely+0x1a1b): undefined reference to `__cxa_call_terminate'
/usr/bin/ld: examples/CMakeFiles/jacobiCudaGraphs.dir/modified_cuda_samples/jacobiCudaGraphs/main.cpp.o:main.cpp:(.text.unlikely+0x1b54): more undefined references to `__cxa_call_terminate' follow
collect2: error: ld returned 1 exit status

Quick Reply

Change Text Case: 
   
  • Similar Topics
    Replies
    Views
    Last post