Библиотека работает с Clang, но не с GCC

0

Почему эта библиотека отлично работает с Apple LLVM 5.0 (clang-500.2.79), а просто включение файла заголовка вызывает ошибку с GCC 4.9?

Минимальный исходный файл, который создает ошибку:

#include <divsufsort.h>

int main() {  
  return 0;
}

Ошибка, которую я получаю с GCC 4.9:

In file included from main.cpp:1:0:
/usr/local/include/divsufsort.h:74:1: error: expected constructor, destructor, or type conversion before '(' token
 DIVSUFSORT_API
 ^
/usr/local/include/divsufsort.h:86:1: error: expected constructor, destructor, or type conversion before '(' token
 DIVSUFSORT_API
 ^
/usr/local/include/divsufsort.h:94:1: error: expected constructor, destructor, or type conversion before '(' token
 DIVSUFSORT_API
 ^
/usr/local/include/divsufsort.h:108:1: error: expected constructor, destructor, or type conversion before '(' token
 DIVSUFSORT_API
 ^
/usr/local/include/divsufsort.h:123:1: error: expected constructor, destructor, or type conversion before '(' token
 DIVSUFSORT_API
 ^
/usr/local/include/divsufsort.h:137:1: error: expected constructor, destructor, or type conversion before '(' token
 DIVSUFSORT_API
 ^
/usr/local/include/divsufsort.h:152:1: error: expected constructor, destructor, or type conversion before '(' token
 DIVSUFSORT_API
 ^
/usr/local/include/divsufsort.h:169:1: error: expected constructor, destructor, or type conversion before '(' token
 DIVSUFSORT_API
  • 2
    Это не библиотека; это заголовок. Есть разница Заголовок - это исходный код; библиотека - это объектный код (Да, Boost сбивает с толку, имея «библиотеки только для заголовков».) Вы компилируете это как C ++ или как C? Он предназначен для компиляции как C ++ или как C? Пожалуйста, выберите правильный язык и не используйте двойной тег.
  • 2
    Покажите свои команды компиляции.
Показать ещё 1 комментарий
Теги:
clang
gcc
g++

1 ответ

2
Лучший ответ

Я подозреваю, что вам нужно снова запустить ./configure в каталоге libdivsufsort с переменной окружения CC, предварительно установленной для компилятора, который вы собираетесь использовать. (CC для кода "c". CXX для кода c++). Затем перестройте.

cd ~/libdivsufsort-2.0.1
make clean
CC=gcc
CXX=g++
./configure
make

Попробуйте эту ссылку: настройка для компилятора, отличного от значения по умолчанию при запуске configure

Ещё вопросы

Сообщество Overcoder
Наверх
Меню