Tôi đang cố gắng để biên dịch một ứng dụng đơn giản với gcov và nhận được các lỗi liên kết sau đây:Biểu tượng gcov ở đâu?
gcc AllTests.o CuTestTest.o CuTest.o -o TestTest
AllTests.o: In function `global constructors keyed to 0_RunAllTests':
/home/p7539c/cutest/AllTests.c:26: undefined reference to `__gcov_init'
AllTests.o:(.data+0x44): undefined reference to `__gcov_merge_add'
CuTestTest.o: In function `global constructors keyed to 0_TestCuStringNew':
/home/p7539c/cutest/CuTestTest.c:30: undefined reference to `__gcov_init'
CuTestTest.o:(.data+0x64): undefined reference to `__gcov_merge_add'
CuTest.o: In function `global constructors keyed to 0_CuStrAlloc':
/home/p7539c/cutest/CuTest.c:379: undefined reference to `__gcov_init'
CuTest.o:(.data+0x184): undefined reference to `__gcov_merge_add'
collect2: ld returned 1 exit status
make: *** [TestTest] Error 1
tôi dường như không thể tìm thấy vị trí của những biểu tượng mất tích. gcov hiện diện trên máy chạy phiên bản gcc 4.1.2
Bất kỳ ý tưởng nào? Cảm ơn.
Chỉnh sửa:
Mọi thứ dường như hoạt động tốt khi sử dụng gcov với ứng dụng bao gồm một tệp .c. Khi tôi có nhiều tệp .c (do đó nhiều tệp .o) tôi có vấn đề ở trên.
Các bước biên dịch trông giống như sau:
cc -fprofile-arcs -ftest-coverage -g -c -o AllTests.o AllTests.c
cc -fprofile-arcs -ftest-coverage -g -c -o CuTestTest.o CuTestTest.c
cc -fprofile-arcs -ftest-coverage -g -c -o CuTest.o CuTest.c
Đã thử rằng với một ứng dụng tệp duy nhất và nó hoạt động. Tôi gặp sự cố với ứng dụng nhiều tệp của mình. Nó biên dịch tốt, nhưng dường như có liên kết lẫn lộn. – john146
p7539c @ localhost cutest> làm cho cc -fprofile-arcs -ftest-coverage -g -c -o AllTests.o AllTests.c cc -fprofile-arcs -ftest-coverage -g -c -o CuTestTest.o CuTestTest. c cc -fprofile-arcs -ftest-coverage -g -c -o CuTest.o CuTest.c gcc AllTests.o CuTestTest.o CuTest.o -o TestTest – john146
Bạn vẫn không chuyển tham số phủ ngoài cuộc gọi cuối cùng tới gcc. Bạn cần phải xác định nó khi liên kết quá. – flodin