libfuzzer на macOS не найден для архитектуры x86_64

Я пытаюсь скомпилировать простой пример фаззинга на macOS 10.14.6 и CLion 2019.2.5

#include <stdint.h>
#include <stddef.h>

extern "C" int LLVMFuzzerTestOneInput(const uint8_t *data, size_t size) {
    if (size > 0 && data[0] == 'H')
        if (size > 1 && data[1] == 'I')
            if (size > 2 && data[2] == '!')
                __builtin_trap();
    return 0;
}

который также показан здесь https://llvm.org/docs/LibFuzzer.html, если настроил мой CMakeLists.txt, все работает нормально, он связывает исполняемый файл CXX после этого возникает ошибка

Undefined symbols for architecture x86_64:
  "_main", referenced from:
     implicit entry/start for main executable
ld: symbol(s) not found for architecture x86_64

такая же ошибка возникает, когда я компилирую через терминал. Я пробовал это с Virtualbox с Ubuntu 18.04 - никаких проблем с той же версией Clion и списком команд.

1 ответ

Решение

Это работает, если вы используете правильный компилятор, а не яблочный, -> brew install llvmустановить компилятор предпочтений c и C++ на /usr/local/opt/llvm/bin/clang

Другие вопросы по тегам