Gtest konnte auf dem Mac nicht erstellt werdenC++

Programme in C++. Entwicklerforum
Anonymous
 Gtest konnte auf dem Mac nicht erstellt werden

Post by Anonymous »

Ich hatte ein ähnliches Problem, bevor ich den Mac Arm-Chip einbaute. Aber ich kann jetzt nicht ganz herausfinden, was ich falsch mache.
Beim Erstellen meines Tests erhalte ich die folgende Fehlermeldung:

Code: Select all

Undefined symbols for architecture arm64:
"_main", referenced from:

ld: symbol(s) not found for architecture arm64
clang++: error: linker command failed with exit code 1 (use -v to see invocation)
Dies ist auf einem Mac:

Code: Select all

> uname -a
Darwin Martins-MacBook-Pro-2.local 25.0.0 Darwin Kernel Version 25.0.0: Wed Sep 17 21:41:45 PDT 2025; root:xnu-12377.1.9~141/RELEASE_ARM64_T6000 arm64
Gibt es eine Möglichkeit zu überprüfen, ob meine Dateien alle für den „arm64“-Prozessor erstellt wurden (d. h. ich erstelle nicht versehentlich eine der Dateien in einem abwärtskompatiblen Modus)?
Das Build-System macht unter der Haube Folgendes:
Es erstellt die Google-Testbibliotheken auf einer Konfiguration wie dieser:

Code: Select all

cd ${GTEST_ROOT}
g++ -std=c++20 -I${GTEST_ROOT}/googletest/include -I${GTEST_ROOT}/googletest -c ${GTEST_ROOT}/googletest/src/gtest-all.cc
g++ -std=c++20 -I${GTEST_ROOT}/googletest/include -I${GTEST_ROOT}/googletest -c ${GTEST_ROOT}/googletest/src/gtest_main.cc
ar -rv libgtest.a gtest-all.o gtest_main.o
Ich habe überprüft, dass sich main() in der statischen Bibliothek befindet:

Code: Select all

> nm ${GTEST_ROOT}/libgtest.a | grep main
gtest_main.o:
0000000000000000 T _main
Dann macht meine Build-Datei Folgendes:

Code: Select all

  g++                                                             \
-o coverage/unittest.prog                                   \
-L/opt/homebrew/lib                                         \
coverage/BasicUpTest.o                                      \
coverage/FixTest.o                                          \
coverage/FrameTest.o                                        \
coverage/unittest.o                                         \
-fPIC                                                       \
-g                                                          \
-std=c++20                                                  \
-L./coverage                                                \
-lUnitTest                                                  \
-L../coverage                                               \
-L${GTEST_ROOT}                                             \
-lgtest                                                     \
-fprofile-arcs                                              \
-ftest-coverage                                             \
-lpthread

Quick Reply

Change Text Case: 
   
  • Similar Topics
    Replies
    Views
    Last post