Ошибка компиляции Bullseye при постепенном построении 32-битного исполняемого файла из смеси C и C++.Linux

Ответить
Anonymous
 Ошибка компиляции Bullseye при постепенном построении 32-битного исполняемого файла из смеси C и C++.

Сообщение Anonymous »

Я столкнулся с проблемой BullseyeCoverage для Linux при постепенном преобразовании смешанного проекта C/C++ в 32-битный исполняемый файл с использованием Clang через covc. Первая сборка работает нормально, но перекомпиляция любого исходного файла и последующая попытка повторно связать его с окончательным исполняемым файлом — нет. При этом Bullseye сообщает о следующей ошибке при компиляции собственного libcov-posix.c во время компоновки:

Код: Выделить всё

BullseyeCoverage Compile 9.0.7 Linux-x64 License 25590
Copyright (c) Bullseye Testing Technology
warning: Ignoring source file directory './', coverage file contains '/home/data/u/tmp/Joshua/BullseyeTest/'
/usr/bin/ccache "/opt/BullseyeCoverage/bin/covc" /usr/bin/clang++-16 -m32 -o main main.o simple_math.o
BullseyeCoverage Compile 9.0.7 Linux-x64 License 25590
Copyright (c) Bullseye Testing Technology
In file included from /opt/BullseyeCoverage/run/libcov-posix.c:139:
/opt/BullseyeCoverage/run/libcov-core-big.h:340:8: error: use of undeclared identifier 'program_invocation_name'
if (cov_imageName[0] != '\0') {
^
/opt/BullseyeCoverage/run/libcov-posix.c:109:24: note: expanded from macro 'cov_imageName'
#define cov_imageName program_invocation_name
^
In file included from /opt/BullseyeCoverage/run/libcov-posix.c:139:
/opt/BullseyeCoverage/run/libcov-core-big.h:342:43: error: use of undeclared identifier 'program_invocation_name'
bi = stringCopy(buf, bi, sizeof(buf), cov_imageName);
^
/opt/BullseyeCoverage/run/libcov-posix.c:109:24: note: expanded from macro 'cov_imageName'
#define cov_imageName program_invocation_name
^
2 errors generated.
BullseyeCoverage error: status 1: /usr/bin/clang-16
make: *** [Makefile:2: main] Error 1
Следующие файлы иллюстрируют и воспроизводят проблему:

Код: Выделить всё

simple_math.c:
extern int add(int a, int b) {
return a + b;
}

Код: Выделить всё

simple_math.h:
#ifndef _SIMPLE_MATH_H
#define _SIMPLE_MATH_H
extern "C" int add(int a, int b);
#endif

Код: Выделить всё

main.cpp:
#include 
#include "simple_math.h"

int main() {
int result = add(3, 2);
std::cout
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Linux»